1つの可能なアプローチは、Object.defineProperty()とinit()
に非書き込み可能として、このプロパティを定義している:
Car.prototype = {
init: function() {
Object.defineProperty(this, 'country', {
value: this.country,
enumerable: true, // false if you don't want seeing `country` in `for..of` and other iterations
/* set by default, might want to specify this explicitly
configurable: false,
writable: false
*/
});
},
country: 'Ireland',
};
このアプローチは、1つの非常に興味深い機能を持っている:あなたはプロトタイプを経由してプロパティを調整することができ、そしてそれは、すべてのオブジェクトに影響を与えますそれ以来、作成された:
var c1 = new Car();
c1.country = 'England';
console.log(c1.country); // Ireland
c1.__proto__.country = 'England';
console.log(c1.country); // Ireland
var c2 = new Car();
console.log(c2.country); // England
あなたは、これはどちらか、起こるCar.prototype
の変更を防ぐ、またはのプライベート変数にcountry
を有効にしたくない場合このような関数、:[?constキーワードを使用して、オブジェクトのプロパティとしてJavascriptの定数を作成する方法]の
Car.prototype = {
init: function() {
var country = 'Ireland';
Object.defineProperty(this, 'country', {
value: country,
});
}
};
可能な複製(https://stackoverflow.com/questions/10843572/how-to-create-javascript -constants-as-properties-of-objects-using-const-keyword) –