/**
* @author paula
*/
var myObj = {};
Object.defineProperty(myObj, "prop1", {
get: function(){return this._prop1;},
set:function(value){this._prop1 = value;},
enumerable:true});
Object.keys(myObj) // Note that returns ["prop1"]
myObj.prop1 = "Hello"; // call set
Object.keys(myObj); // Returns ["prop1", "_prop1"]
myObj // Object {prop1: "Hello", _prop1: "Hello"}
我已經爲前提,以使用對象屬性來填充空的對象。 defineProperty。困難在於我只想創建一個屬性 - [「prop1」],並且在上面的示例中,基於Object.keys()返回的內容,它看起來像創建了兩個屬性 - [「prop1」,「_prop1」 ]。的Javascript defineProperty和Object.keys返回困境
問題:「prop1」是什麼名稱 - 屬性還是屬於僞屬性? 對「prop1」和「_prop1」使用name屬性是否正確?
我也試過這個解決方案:
var myObj1 = {};
Object.defineProperty(myObj1, "prop1", {
get: function(){return this.prop1;},
set:function(value){this.prop1 = value;},
enumerable:true});
myObj1.prop1= "Bye"
,並得到這個錯誤:「的RangeError:最大調用堆棧大小超出」這也是引發,因爲集無限循環一遍又一遍地調用相同的代碼再次。我想知道是否有任何解決此「RangeError:最大調用堆棧...」的問題? (可能重複)。謝謝。