返信するのは、get
メソッドを定義したものです。 get
returnに関数がある値は、それが解決する値です。
を参照してください:あなたはTest.prototype.time
を再構成するObject.defineProperty
を設定するためにconsole.logはもともと定義された1とは対照的に、新しい値を出力する理由
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
Object.defineProperty(Test.prototype, 'time', {
configurable: true,
get: function() { return 'A new value!'; }
});
var a = new Test();
console.log(a.time); //A new value!
あなたが迷っている場合は、まあ、それはですそれの新しいインスタンスを新たな価値にした新しい価値にすることです。
あなたは自分のためにこれをテストすることができます:あなたはb
をインスタンス化するとき
function Test(){
this.time='pat';
}
// This instance will have the old values
var b = new Test();
// Change value returned by Test.time by new Test instances
Object.defineProperty(Test.prototype, 'time', {
configurable: true,
get: function() { return 'A new value!'; }
});
var a = new Test();
console.log(a.time); // A new value!
consoel.log(b.time); // pat
はあなたが元の定義とインスタンスを作られました。しかし、a
をインスタンス化すると、新しい定義がtime
のインスタンスが作成されたため、それが異なるのです。
私はOPは、オブジェクト自体の値は試作品をチェックする前に、最初に返されなかった理由を知りたかったと思います。 – alex
あなたは正しいと思います。ありがとう! – Mike