1

我只是拿起Javascript,我不明白这个问题。

我创建了一个自定义对象,该对象使用一个名为DeleteReasonCodes的实例变量delReasonCodes,声明为一个数组。但是,内部方法似乎看不到这个实例变量。每次我尝试运行它时,都会出现delReasonCodes is not defined错误。

也许我只是不理解 Javascript 范围规则?

var DeleteReasonCodes = {

    delReasonCodes: [],

    get: function ()
    {
        return delReasonCodes;
    },

    add: function (code, desc)
    {
        delReasonCodes.push(new DeleteReasonCode(code, desc));
    }
};
4

3 回答 3

2

不,javascript 作用域属于函数(仅此而已)。

您创建的唯一变量是DeleteReasonCodes,并且您已经为它分配了一个具有 3 个属性的对象。如果您有对对象的引用,则可以通过属性访问器运算符访问它们。在您的情况下,您可以使用this.delReasonCodeDeleteReasonCodes.delReasonCode- 请参阅此答案以了解差异。

于 2012-11-05T17:00:48.500 回答
1

您将 JavaScript 对象视为另一种语言的类。JavaScript 中的局部作用域仅存在于函数内部,而不存在于对象内部。在您的情况下,您需要使用完全限定名称访问数据:

DeleteReasonCodes.delReasonCodes.push();
于 2012-11-05T17:01:52.817 回答
0

如果你这样做

delReasonCodes: [],

get: function() {
    return this.delReasonCodes;
},
于 2012-11-05T17:02:39.557 回答