var p2={ }; Object.defineProperty(p2,"gs",{ get:function () { return this.gs; }, set:function (gs) { this.gs=gs; } })
寫了一段如上low的程式碼,然後再瀏覽器執行
alert(p2.gs);後瀏覽器報錯了
Uncaught RangeError: Maximum call stack size exceeded
錯誤詳情:
由於在js中
呼叫的是由於其p2.gs呼叫的其實是gs.get方法,由於在函式內部this.gs呼叫的還是gs.get方法,導致其一直在迴圈呼叫,最後堆疊報錯了
解決辦法:
var p2={ _gs:123 }; Object.defineProperty(p2,"gs",{ get:function () { return this._gs; }, set:function (gs) { this._gs=gs; } })