JavaScript初始化数组两种方式间的差异
//字面量初始化 //相当于=>{0:undefined,1:undefined,length:2} var a1 = [undefined,undefined]; //验证: //true alert(a1.hasOwnProperty("0")); //true alert(a1.hasOwnProperty("1")); //true alert(a1.hasOwnProperty("length")); //构造函数初始化 //相当于=>{length:2} var a2 = new Array(2); //验证: //false alert(a2.hasOwnProperty("0")); //false alert(a2.hasOwnProperty("1")); //true alert(a2.hasOwnProperty("length"));
结论:通过构造函数初始化得到的对象,实例上只有一个length属性。
这点差别在ES5的API实现中得到了体现:
//[1, 1] alert(a1.map(function(e){return 1;})); //[undefined × 2] alert(a2.map(function(e){return 1;}));
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: JS定义数组,初始化
- 下一篇: javascript:创建数组并赋值的三种方法