您的位置:首页 > Web前端 > JavaScript

JavaScript边学边记

2015-11-09 15:47 246 查看
1.数组可以一次push多个

var s=[];
s.push(1,2,3);
2.for循环的条件可以写多个表达式
//阶乘
for(var i=1,f=1;i<10;i++,f*=i)
console.log(f);


//还可以循环对象
//返回第一个不包含next属性的对象
function out(obj){
for(;obj.next;obj=obj.next)
return obj;
}

for/in会枚举出对象的所有属性(enumerable为false的)

3.JavaScript不区分整型和浮点,所有数字均用浮点表示.采用IEEE-754标准定义的64位浮点格式表示数字.

4.算术运算符在溢出,下溢,或被0整除时不会报错.当数字结果无穷大时,以Infinity表示,为无穷小时以-Infinity表示.

5.原始表达式有三种:1.直接量(数字,字符串,正则表达式)2.保留字(true,false,null)3.变量

6.数组直接量的元素结尾可以多一个逗号,并不会创建一个新的数组元素.

var s=[1,,2,];//s.length=3
7.创建对象表达式时,如果构造函数无参数,可以省略括号.
var obj = new Object();//new Object
8.运算结果是依赖运算符的运算顺序.
1+2+'abc';//"3abc"
1+(2+'bb');//"12bb"
9.i++和++i的区别
var i=1,j=i++;//i=1,j=2
var i=1,j=++i;//i=2,j=1

10.switch case中,使用的是===进行比较.default可以放在任何位置.

11.NaN不等于任何值,包括本身.

12.空语句可以用来做赋值操作

var o={x:1,y:2,z:3};
var a=[],i=0;
for(a[i++] in o);//分号必备
//a=>["x","y","z"]
var a=[];
for(var i=0;i<3;a[i++]=0);
//a=>[0,0,0]

13.标签的命名空间和变量或函数的命名空间是不同的,因此可以使用同一个标签名分别命名变量和函数.但不能和内部标签名相同.两个独立的代码段标签可以相同.标签可以进行嵌套.

14.对象的属性特性:

a.可写(writable)--是否可以设置该属性的值;

b.可枚举(enumerable)--是否可以通过for/in循环返回该属性;

c.可配置(configurable)--是否可以删除或修改该属性;

在ECMAScript5之前,通过代码给对象创建的属性都是可写,可枚举,可配置.从ES5开始,可以进行配置.

15.delete运算符,只能删除自有属性,不能删除继承属性.delete只是断开属性和宿主对象的联系.

var a={p:{x:1}};
var b=a.p;
delete a.p;
console.log(b.x);//=>1
//只删除了原型对象和属性的联系,但引用依然存在
//在现实中要注意这种情况,防止内存泄露
//销毁对象时,要遍历属性中的属性,依次删除

16.对象不能直接用new方法创建.要创建对象实例参见如下办法:

//1.Object.create方法(ES5以上支持)
var a={};
var b=Object.create(b);
//2.函数原型方法
function inherit(o){
function f(){};
f.prototype=o;
return new f();
}

17.对象某属性的writable为false时,赋值操作变得不好用,可以通过Object.defineProperty进行修改.

var a={x:1};
Object.defineProperty(a,"x",{writable:false,enumerable:false});
a.x=2;//赋值失败,x=1
Object.defineProperty(a,"x",{value:2});
a.x;//=>2
Object.keys(a);//[]属性x不可枚举

18.使用对象直接量创建的对象,用Object.prototype做为原型;

使用new创建的对象,使用构造函数的prototype作为原型;

通过Object.create()创建的对象,使用第一个参数(也可以是NULL)作为它的原型.

19.函数,RegExp,Error和undefined不能序列化和还原.

JSON.stringify()只能序列化对象可枚举的自有属性.

不能序列化的属化,在序列化之后的字符串中会被省略掉.

20.ECMAScript5中数组方法的第一个参数为函数,该函数有三个参数:1.数组元素;2.元素的索引;3.数组本身.

var a=[1,2,3];
a.forEach(function(value,index,arr){
arr[index]=value+1;//所有元素加1
});
a;//[2,3,4]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: