javascript - An infinite loop caused because of two getters? -
the following code executes infinite loop (prints getter1 once, , getter2 until stopped):
var person1 = { _age: 42, age() { console.log("getter1"); return this._age; } }; object.defineproperty(person1, "_age", { get: function() { console.log("getter2"); return this._age; } }); console.log(person1.age); // true what causes it? (note: i'm aware fact declared 2 different getters).
it's not infinite loop, infinite recursion. you're return this._age inside getter _age, accessing this._age implicitly calls getter again.
note once you've defined getter called _age old value of _age (42) overwritten. there no property value 42 anymore. if want create getter returns value of property can't getter same property, name getter other _age:
var person1 = { _age: 42, age() { console.log("getter1"); return this._age; } }; object.defineproperty(person1, "age2", { get: function() { console.log("getter2"); return this._age; } }); console.log(person1.age); // 42 console.log(person1.age2); // 42
Comments
Post a Comment