在我的页面中,我使用requireJs
启动课程define('MyClass', [], function() {
var MyClass = new Class({
initialize: function() {
...
}
});
return MyClass;
});
require(['MyClass'], function(MyClass) {
var myClass = new MyClass();
});
问题是我想在其他一些js代码中访问myClass变量,但myClass变量不是全局的。如何将myClass变量公开给其他js代码?
答案 0 :(得分:1)
requireJS的一点是避免全局变量。如果只需要MyClass
的一个实例,则模块可以返回实例而不是类。
define('MyClass', [], function() {
var MyClass = new Class({
initialize: function() {
...
}
});
return new MyClass();
});
答案 1 :(得分:1)
通常,您不应在全局空间中泄漏变量。
如果您正在谈论的其他代码是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();
});
}