标签:
var a = new Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
var a = Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
虽然,我不知道他的内部实现机制是什么,但是,猜想他的构造器函数可能是如下定义的:
function Array(args) { //如果,this不是Array的实例的话, //说明不是通过new调用的,则在这里再重新调用 if( !this instanceof Array) { return new Array(args); } //后面是正常调用时的实现代码 //... }
奇葩2:当只传一个参数给构造函数时,行为莫测
var a = new Array(12); console.log(a.length); //12 console.log(a); //[]
var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…)
var a = new Array("1.1"); console.log(a.length); // console.log(a); //["1.1"]
var a = []; //空数组 var a = [1, 1, "bom"]; //三个元素 var a = [12]; //一个元素,并且元素是12
var a = [1, 2, 3, 4]; console.log(a.length); //4 a.length = 100; console.log(a.length); //100
var a = [1, 2, 3, 4]; a.length = 100; console.log(a[10]); //undefined console.log(99 in a); //false
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(a.length); //100
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(99 in a); //true; console.log(98 in a); //false console.log(a.length); //100
标签:
原文地址:http://www.cnblogs.com/yugege/p/5154193.html