在对象函数中访问Javascript属性的指定值

时间:2013-05-20 21:34:27

标签: javascript javascript-objects

我有一个javascript对象,它有一个属性,在实例化对象后赋值。然后我想在对象的函数中使用该值。但是,该函数仅查看属性的初始值(即null)

,而不是新分配的值
var _protocolData = new function () {

    var test = null;
    var getTest = function () {

        return test;
    };

    return {
        Test: test,
        GetTest: getTest
    };
};
//
// assign the new property value
_protocolData.Test = "New Value";
//
// I expect the dialog box to be populated with "New Value".
alert(_protocolData.GetTest());  // alert box is empty (null)

2 个答案:

答案 0 :(得分:1)

您可以使用setter:

var _protocolData = new function () {

    var test = null;
    var getTest = function () {
        return test;
    };
    var setTest = function(t) {
        test = t;   
    }

    return {
        Test: test,
        GetTest: getTest,
        SetTest: setTest
    };
};
// assign the new property value
_protocolData.SetTest("New Value");

注意:现代JavaScript还有实际的getter和setter,您可以使用Object.defineProperty创建它们。

答案 1 :(得分:0)

那是因为你的函数关闭了变量 test,这就是你在函数中使用的函数。您根本没有使用属性 Test

使用属性 Test(因为您在制作属性时已经给出了大写字母):

var getTest = function () {

    return this.Test;
    //     ^^^^^^
};

使用属性需要在上面提供对象引用(this.),并且属性名称具有大写T而不是小写。< / p>


请注意,引用的对象要比它需要的要复杂得多。你可以这样写:

var _protocolData = {

    Test:    null,
    GetTest: function () {

        return this.Test;
    }
};