读js语言精粹收获

1.js可以根据选择跳出多层循环【在循环前加个标签】

label:for(var i=0;i<2;i++){
            for(var j=0;j<10;j++){
                console.log(i,j);
                if(j==3){
                    break label;
                }
            }
        }

2.typeof运算符产生的值只有'number','undefined','string','boolean'【es5的基础数据类型少了一个null】+'function','object'

注:array和null结果都为'object'

需要依靠Object.prototype.toString.apply()

3.如果添加一个属性到一个原型对象中,以该原型创建的对象均可见

4.Number String的原型对象都是Function,因为它们都是单个函数实例,而Function是所有函数的原型对象。

5.如果新建新的方法去修改闭包内的数据,是行不通的,但是可以使用闭包内的方法去修改

var maker=function(){
    var id=12312;
    
    return {
        setId:function(newid){
            id=newid;
        }
        show:function(){
           console.log(id);
       }
    }
}    

var unit=maker(); 
unit.setId(1111);
unit.show(); //1111
unit.setId2=function(newid){//新建函数去修改id
            id=newid;
        }
unit.setId2(2222);
unit.show();//1111

 6.arguments压根不是数组  只是数据集合外加一个length属性,不可以使用数组所用的方法

所以要使用数组的方法需要使用apply和call方法,slice.apply(arguments);

原文地址:https://www.cnblogs.com/kiik/p/14220438.html