在Javascript中获取分配给扩展函数原型的数组的长度

时间:2012-12-23 17:53:39

标签: javascript node.js

下面的代码将记录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);

1 个答案:

答案 0 :(得分:5)

由于b没有test属性 - 它是函数,其原型对象Function.prototype个。

但是使用此函数创建的对象将在其原型链中具有此属性(prototype 属性 b指向具有test属性的对象定义,所以这......

console.log(new b().test.length);

...应该按预期给你3个。