下面的代码将记录a,a.length和b.test。 a和b.test都产生[1,2,3]。编辑 - 我搞砸了。 b.test产生undefined。请参阅下面的raina的回复。
a.length产生3。
b.test.length失败并显示“无法读取属性'长度'未定义”
为什么当a和b.test相等时会出现这种情况?
var a = [1,2,3];
var b = function(){};
b.prototype.test=[1,2,3];
console.log(a);
console.log(a.length);
console.log(b.test);
console.log(b.test.length);
答案 0 :(得分:5)
由于b
没有test
属性 - 它是函数,其原型对象是Function.prototype
个。
但是使用此函数创建的对象将在其原型链中具有此属性(prototype
属性 b
指向具有test
属性的对象定义,所以这......
console.log(new b().test.length);
...应该按预期给你3个。