AirBnb Javascript Style Guide建议模块下面的代码模式:函数(全局){...}(this)如何工作?
// fancyInput/fancyInput.js
!function(global) {
'use strict';
var previousFancyInput = global.FancyInput;
function FancyInput(options) {
this.options = options || {};
}
FancyInput.noConflict = function noConflict() {
global.FancyInput = previousFancyInput;
return FancyInput;
};
global.FancyInput = FancyInput;
}(this);
但是,一旦你比如运行:
FancyInput({a: 1, b: 2});
控制台上显示这个错误“遗漏的类型错误:无法设置的未定义的属性‘选项’” 。
我想明白为什么这里面的FancyInput函数是Window。到目前为止,我可以在开始时扩展这个模块模式。我应该以另一种方式绑定它吗?
难道你不应该用'var x = new FancyInput({...})'调用它吗? –