Так как вы определили свой метод get
для возврата. Какое бы значение вы не имели в функции get
return - это значение, которое оно разрешает.
См:
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!
Если вам интересно, почему console.log выводит новое значение, в отличие от той, первоначально определенной, хорошо, это потому, что вы установили Object.defineProperty
перенастроить Test.prototype.time
чтобы быть новым значением, которое сделало новый экземпляр его также новым значением.
Вы можете проверить это сами:
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
Когда вы инстанцирован b
вы дали вы сделали экземпляр с исходными определениями. Тем не менее, когда вы создали сайт a
, вы сделали экземпляр с новыми определениями time
, поэтому он отличается.
Я думаю, что ОП хочет знать, почему значение на самом объекте не было возвращено первым перед проверкой прототипа. – alex
Думаю, ты прав. Спасибо alex! – Mike