私はプロトタイプの継承とクラスの作成をより深く把握しようとしています (他の方法があることはわかっていますが、この目的のためにプロトタイプを把握しようとしています)。私の質問は次のコード例を使用することです。内にプライベート変数を作成する方法がありTree
、Fruit
それは関数では返されませんが、プロトタイプ関数genus
およびbulk
?には引き続きアクセスできます。
var Tree = function ( name, size ) {
this.name = name;
this.size = size;
};
Tree.prototype.genus = function(){
return ((typeof this.name !== 'undefined') ? this.name : 'Hybridicus Maximus');
};
Tree.prototype.bulk = function(){
return ((typeof this.size !== 'undefined') ? this.size : '8') + ' ft';
};
var Fruit = function( name, size ) {
this.name = name;
this.size = size;
};
Fruit.prototype = new Tree();
// Fruit.prototype = Tree.prototype; -- I know this can be used, too.
Fruit.prototype.bulk = function(){
return ((typeof this.size !== 'undefined') ? Math.floor(this.size / 2) : '4') + ' lbs';
};
var pine = new Tree('Pine', 9);
var apple = new Fruit('Apple', 6);
console.log(pine.genus(), pine.bulk()); // Outputs: "Pine 9 ft"
console.log(apple.genus(), apple.bulk()); // Outputs: "Apple 3 lbs"
編集:プロトタイプ関数でアクセスできるプライベート変数に置き換えようとしてthis.name
います。this.size
分かりづらくてすみません!