从字符串名称中要求JS模块的新实例
RequireJS new instance of a module from a string name
我有几个模块,我想从字符串中实例化对象。当类/对象等在全局作用域window
上时,这通常很容易
new window["MyClass"]()
使用requireJS时,模块不在window
作用域中,如果在类中,则不在this
上。
你知道我需要什么范围吗?
define(['testclassb'], function(TestClassB) {
var TestClassA, testclassa;
TestClassA = (function() {
function TestClassA() {
console.log("A");
new this["TestClassB"](); #errors with undefined function
new window["TestClassB"](); #errors with undefined function
new TestClassB(); #works fine
}
TestClassA.prototype.wave = function() {
return console.log("Wave");
};
return TestClassA;
})();
testclassa = new TestClassA();
return testclassa.wave();
});
我有几个模块,我想从字符串实例化对象
这基本上是个坏主意,表明有代码气味。你真的需要吗?
你知道我需要什么范围吗?
TestClassB
是局部变量,无法通过名称访问。由于您已经静态地将testclassb
声明为依赖项,因此没有理由不使用静态变量TestClassB
。
然而,require.js允许您同步require()
已经加载的模块,因此您也可以使用
new (require("testclassb"))();
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- 如何基于数组值创建新实例
- VS2010 javascript调试器希望在VS2010的新实例中启动
- 将新类实例中的数据存储在数组中
- Web服务器意外退出,正在重新启动新实例
- JavaScript - 有没有办法动态创建对象的新实例
- Jquery类选择器无法选择用.append()添加的新类实例
- 创建新日期实例时的奇怪行为
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- CKEditor新实例始终处于卸载状态
- Javascript - 如何创建新的函数实例
- JavaScript中Var类型的新实例
- jQueryFileTree如何清除实例、重新实例化新实例或刷新
- angular.injector在每次调用时返回新的服务实例
- 每次使用角度控制器都会创建一个新的if实例
- 使用模块模式时,如何创建对象的新实例
- 使用动态函数名编写Javascript新对象实例
- Reset All按钮从JS literal添加一个新的实例jQuery
- 当一次将事件绑定到多个元素时,每个元素都有新的实例
- Angular 2 RC5的组件级提供商每次都会获得新的实例