0
我希望能夠在實例化新對象時設置新名稱。但不知何故,我發現了一個無限循環。我不知道如何解決它。如何使用Object.defineProperties中的存取器值設置默認值?
function Human(opt) {
this.name = opt.name; //this causes ranger error or infinite loop
}
Object.defineProperties(Human.prototype, {
name : {
set : function(val) {
if(name === 'Einstein') {
console.log('Hello Einstein');
}
this.name = val;
},
configurable : false
}
});
對不起。它應該是this.name – einstein 2013-05-06 14:47:02
當我使用'new Human({name:'Einstein'})'我想'this.name'設置爲' – einstein 2013-05-06 14:49:45
@ Woho87:我知道,但這就是導致循環的原因。如果你想使用'set'功能,你需要的是當'.name'被設置時,你的setter實際上將它設置爲一個不同的屬性。然後你爲'.name'設置一個'get',這樣當你詢問'.name'的值時,它就會從其他屬性中獲取它。 – 2013-05-06 14:51:15