我有一个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)
答案 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;
}
};