JSHint中有一条我从未明确理解的规则/选项:nonew规则:
此选项禁止使用构造函数 副作用。有些人喜欢不用调用构造函数 将结果分配给任何变量:
new MyConstructor();
这种方法没有优势 简单地调用MyConstructor,因为运算符是new的对象 创建不会在任何地方使用,因此您通常应该避免构造函数 喜欢这个。
这是我不明白的地方:
调用对象构造函数会产生“副作用”的示例是什么?
如果您不需要将实例作为变量引用,那么调用对象构造函数的正确方法是什么?
在没有MyConstructor()
的情况下调用new
没有任何好处?显然,这不会按预期创建对象。
为了帮助引出有用的响应,在调用构造函数后不再需要引用实例时,如何重构下面的代码来实例化对象?
var Module = require('./module');
(function (Module) {
new Module({
el: '#module',
tpl: '#tpl-module',
status: false
});
})(Module);
答案 0 :(得分:0)
如果您不需要将实例作为变量引用,那么调用对象构造函数的正确方法是什么?
如果您不需要实例,请不要调用构造函数。
什么意思是说没有新功能调用MyConstructor()没有优势?显然,它不会按预期创建一个对象。
如果调用的目的是执行副作用,则不需要创建对象。如果需要,你应该使用普通函数(我很想称之为"过程"),而不是构造函数。
如果构造函数确实使用了实例(并将其绑定到某处),这被认为是一种不好的做法。构造函数应该只创建和初始化对象。其他一切都应该以单独的方法完成。