我有这段代码:
pPoint = function(x,y){
this.x = x || 0;
this.y = y || 0;
}
pPoint.prototype = {
constructor:pPoint,
add:function(){
return this.x+this.y;
}
}
如果我这样做:
a = new pPoint(10,20)
console.log(a.add());
按预期工作(返回30)。
但是,如果我这样做:
Array.prototype = {
abcd:function(){
console.log("bla bla testing");
}
}
然后这样做:
b = new Array();
b.abcd();
它不起作用......为什么?
我知道如果我这样做的话很好......
Array.prototype.abcd:function(){
console.log("bla bla testing");
}
}
我只是不明白为什么那个惯用的工作在我的pPoint而不是数组......
答案 0 :(得分:5)
Array.prototype
属性不可写。
因此,Array.prototype = ...
无效。
您可以通过查看Object.getOwnPropertyDescriptor(Array, 'prototype').writable
false
来查看此内容。
如果你能够做到这一点,你将失去所有的内置数组方法,因为它们是标准Array.prototype
的属性,而不是你试图替换它的新对象。