查看下面的 Javascript 显示模块模式,变量“defaultValue”不会更新,需要一个 getter 来访问和更新值 - 解释在这里。
那么,为什么一个数组(例如 defaultArray)会更新并且可以在没有特定 getter 的情况下访问?
示例代码:
var go = function () {
var defaultValue = null;
var defaultArray = [];
var setDefaultValue = function (newObj) {
for (var i = 0; i < 5; i++) {
if (i == 2) {
defaultValue = newObj;
defaultArray.push(newObj);
}
}
};
var getDefault = function () {
return defaultValue;
};
return {
defaultValue: defaultValue,
setDefaultValue: setDefaultValue,
getDefault: getDefault,
defaultArray: defaultArray,
};
};
window.onload = function () {
var ans = new go();
ans.setDefaultValue({ test: 'ok', unos: 123 })
// At this point, defaultArray has updated, but defaultValue has not
var thisWillBeNull = ans.defaultValue;
var thisWillHaveAValue = ans.defaultArray;
// Can get the value
var newDefault = ans.getDefault();
};