0

親オブジェクトにプライベート変数がある場合に、プロトタイプの継承を実現しようとしました。

次のようなコードを考えてみましょう。

function Piece(isLiveArg) { 
    var isLive = isLiveArg; // I dont wish to make this field as public. I want it to be private.
    this.isLive = function(){ return isLive;}
}    

Piece.prototype.isLive = function () { return this.isLive(); }       

function Pawn(isLiveArg) { 
    // Overriding takes place by below assignment, and getPoints got vanished after this assignment.
    Pawn.prototype = new Piece(isLiveArg);           
}

Pawn.prototype.getPoints = function(){
    return 1;
}

var p = new Pawn(true);

console.log("Pawn live status : " + p.isLive());

ただし、親オブジェクトにはプライベート変数isLive が存在せず、パブリック変数のみが存在する場合、継承はこれを非常に簡単に実現できます。このリンクのように、http://jsfiddle.net/tCTGD/3/

では、親オブジェクトにプライベート変数がある場合、どうすれば同じプロトタイプの継承を実現できますか。

4

1 に答える 1