1

私はこのコードを持っています:

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で機能する理由がわかりません...

フィドル: http://jsfiddle.net/paulocoelho/wBzhk/

4

1 に答える 1

5

Array.prototypeプロパティは書き込み不可です 。

したがって、Array.prototype = ...効果はありません。

Object.getOwnPropertyDescriptor(Array, 'prototype').writableこれは、 を見るとわかりますfalse


それができたとしても、組み込みの配列メソッドはすべて失われてしまいます。それらは標準のプロパティであり、Array.prototype置き換えようとしている新しいオブジェクトのプロパティではないためです。

于 2013-07-23T02:32:04.113 に答える