Variables RequireJs与全局类
在我的页面中,我使用requireJs初始化了一个类Variables RequireJs与全局类,variables,requirejs,global,Variables,Requirejs,Global,在我的页面中,我使用requireJs初始化了一个类 define('MyClass', [], function() { var MyClass = new Class({ initialize: function() { ... } }); return MyClass; }); require(['MyClass'], function(MyClass) { var myClass = ne
define('MyClass', [], function() {
var MyClass = new Class({
initialize: function() {
...
}
});
return MyClass;
});
require(['MyClass'], function(MyClass) {
var myClass = new MyClass();
});
问题是我想在其他一些js代码中访问myClass变量,但myClass变量不是全局变量。向其他js代码公开myClass变量的正确方法是什么?requireJS的一个要点是避免使用全局变量。如果您只需要一个
MyClass
实例,则模块可以返回实例而不是类
define('MyClass', [], function() {
var MyClass = new Class({
initialize: function() {
...
}
});
return new MyClass();
});
一般来说,不应在全局空间中泄漏变量。 如果您正在谈论的另一个代码是AMD风格的模块(RequireJS模块通常是AMD风格的模块),那么您应该导出
myClass
实例,就像导出问题中的myClass
类一样。你已经知道怎么做了
如果您必须与不适合RequireJS的代码进行交互,您应该能够删除var
关键字来泄漏数据:
require(['MyClass'], function(MyClass) {
myClass = new MyClass();
});
这会将myClass
泄漏到全局空间
如果您的代码嵌入到函数中,它可能会命中在更高范围内定义的变量,但您可以这样做:
function () {
// This function has a local `myClass`. You could rewrite it or...
var myClass = new Whatever();
...
require(['MyClass'], function(MyClass) {
// ... you can leak your data like this.
window.myClass = new MyClass();
});
}