函数(全局){..}(this)的工作方式
how function(global){...}(this) works?
AirBnb Javascript Style Guide为模块推荐以下代码模式:
// 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});
控制台显示此错误"Uncaught TypeError:无法设置未定义的属性'options'"。
我试图理解为什么FancyInput函数内部的这个函数是Window。到目前为止,我已经可以扩展这个模块模式,因为一开始。我应该用另一种方式把它捆起来吗?
它的要点是,在浏览器中,全局范围中的this
是window
。在其他环境(主要是node.js)中,它不是window
,而是一个不同的全局对象,但在许多方面,我们关心它的行为是一样的。
您的代码不起作用,因为您需要使用new
关键字来实例化结构:
new FancyInput({a: 1, b: 2});
其创建一个新的对象以使得CCD_ 5在类方法&构造函数。
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 如何获得一个与用“”声明的变量工作方式相同的变量;设“;或在with块中
- javascript中的闭包对我来说工作方式不同
- for循环在node.js中的工作方式
- document.getElementsByClassName的工作方式与getElementById不同
- jQuery的工作方式不一样
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- 自动滚动工作方式不同
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- Javascript ORing在变量中的工作方式
- Chrome扩展和Chome浏览器中的Jquery工作方式不同
- .htaccess和.htpasswd的内部工作方式
- window.location在IE9和FF中的工作方式不同
- jQuery .focus() 在每个浏览器中的工作方式不同.如何防止这种情况
- jquery-ajax 在 Mozilla 和 Chrome 中的工作方式不同
- 字符串包在 Firefox 25 中的工作方式不同
- 加载的JS的工作方式与硬编码不同
- event.target在手机上的工作方式是否不同
- iframe上的onload事件在IE和Firefox / GoogleChrome中的工作方式不同
- 为什么一串数字的工作方式与新日期中的实际数字不同