用Require.js设置和获取全局变量
Setting and getting global variable with Require.js
我使用require.js和backbone.js。我试图设置一个变量,然后通过调用包含Require
变量的模块在整个应用程序的多个视图中使用它。模块为:
define(function (require) {
"use strict";
var variable_a = "aaa", variable_b ="bbb" ;
var some_variables = (function () {
return {
setVariableA: function (x) {
variable_a = x;
},
return_a: variable_a,
return_b: variable_b
};
})();
return some_variables;
});
在我看来,我包括模块,然后设置变量,然后检查它是否已设置:
someVariables.setVariableA('456');
console.log('someVariables.return_a is ');
console.log(someVariables.return_a);
但是这返回"aaa"
而不是"456"
。我做错了什么?
这是javascript中非常常见的事实。当您分隔作用域时,例如,写像
这样的东西(function(){ ... })()
子作用域从父作用域获取所有内容的副本。由于在父作用域中有原始数据类型(例如string
),因此子作用域保存原始数据的副本。因此,你在子作用域所做的任何更改都不会反映在父作用域中。
的解决方法是将原语数据更改为object
,以便子数据持有引用。例如
define(function (require) {
"use strict";
var variables = {
a : "aaa",
b : "bbb"
};
var some_variables = (function () {
return {
setVariableA: function (x) {
variables.a = x;
},
return_variables: variables
};
})();
return some_variables;
});
,调用将更改为
some_variables.setVariableA('456');
console.log('someVariables.return_a is ');
console.log(some_variables.return_variables.a);
这将得到您所期望的456
。
使用
return_a: function() {
return variable_a;
},
return_b: function() {
return variable_b;
}
代替
return_a: variable_a,
return_b: variable_b
因为current 'return_a'和'return_b' 总是保留'variable_a'和'variable_b'的初始值
相关文章:
- jQuery:如何使用文字对象方法中的方法来获取全局变量
- 如何在jquery中将xml解析数据获取为全局变量
- 如何在imacros中获取全局javascript变量
- javascript 中的全局变量来获取地理位置
- 在类中获取全局变量
- 如何在Jint中从全局范围中获取所有变量(和函数名)
- 无法在函数(javascript)中获取全局变量
- Javascript - 无法获取函数来设置要在函数外部使用的全局变量
- Javascript,获取全局变量属性
- 无法从全局变量中获取值
- 在加载和就绪事件之前,将图像大小获取到全局变量中
- 如何从HTML表单中获取值,并将其附加到JS中的全局变量中
- 从.php页面获取JSON数据并将其存储在一个全局变量中
- 从Extjs MVC应用程序中获取全局变量
- 美元.获取和保存全局变量
- 用Require.js设置和获取全局变量
- 为什么addEventListener函数不能获取全局变量
- 无法在另一个js文件中获取全局变量
- 从嵌入式 iframe 中获取全局变量
- 使用jQuery在JavaScript中设置和获取全局变量