为什么我不能在自定义对象中引用变量?

时间:2012-11-05 16:57:22

标签: javascript function variables scope

我只是选择了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));
    }
};

3 个答案:

答案 0 :(得分:2)

不,javascript范围属于函数(没有别的)。

您创建的唯一变量是DeleteReasonCodes,并且您已为其分配了一个包含3个属性的对象。如果您有对象的引用,则可以通过property accessor operator访问它们。在您的情况下,您可以使用this.delReasonCodeDeleteReasonCodes.delReasonCode - 请参阅this answer了解差异。

答案 1 :(得分:1)

您正在使用另一种语言处理JavaScript对象。 JavaScript中的本地范围仅驻留在函数内部,而不是对象。在您的情况下,您需要使用完全限定名称访问数据:

DeleteReasonCodes.delReasonCodes.push();

答案 2 :(得分:0)

如果你这样做

delReasonCodes: [],

get: function() {
    return this.delReasonCodes;
},