0

我正在动态编写getter和setter。我的代码有问题。我需要帮助来纠正它。

我的部分代码如下所示:

var a = {};
var myArray = ["abc", "xyz", "bbb"];

for (var i = 0; i < myArray.length: i++) {
    var tempVar = myArray[i];
    Object.defineProperty(this, tempVar, {
        get: function () {
            var ret = $.extend(true, {}, a[tempVar]);
            return ret;
        },
        set: function (intObj) {
            a[intObj.type] = intObj;

        }
    });
}

我的问题是在 get 函数中我想访问 tempVar 的值,但我无法访问它。

在定义它时甚至没有进入 get 函数。

并且在使用它时将进入 get 函数,但 tempVar 将仅是数组的最后一个值。

如果有人能在这方面指导我。那会很好。

4

1 回答 1

0

是的,该链接有所帮助。谢谢。所以我的代码现在看起来像下面这样。这是一个基本概念,但总是远离闭包。今天学习了!谢谢。

var a = {};
var myArray = ["abc", "xyz", "bbb"];

for (var i = 0; i < myArray.length: i++) {
    var tempVar = myArray[i];
    Object.defineProperty(this, tempVar, {
        get: function (newTemp) {
           return function(){
            var ret = $.extend(true, {}, a[newTemp]);
            return ret;
           }
        }(tempVar),
        set: function (intObj) {
            a[intObj.type] = intObj;

        }
    });
}
于 2014-05-10T00:31:36.997 回答