我有以下代码(From AirBnB github):
!function(global) {
'use strict';
function FancyInput(options) {
this.options = options || {};
}
global.FancyInput = FancyInput;
}(this);
当我尝试在控制台中执行以下代码时,它将引发
TypeError
:var x = FancyInput({"a":1})
错误:
TypeError:无法设置未定义的属性“选项”
为什么不能设置变量?如果我以前用
this
调用它,则可以使用。this.FancyInput({"a":1})
最佳答案
FancyInput
是一个构造函数;您必须使用new
运算符来构造对象。 new
创建一个新的FancyInput
对象,并将其绑定到构造函数内的this
。
var x = new FancyInput({a: 1});
严格模式专门捕获此错误,严格模式会在调用没有上下文而不是全局对象的函数时将
this
设置为undefined
。顺便说一句,这就是您使用this.FancyInput
所做的事情,这是不正确的。关于javascript - JavaScript无法设置变量– FancyInput示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24946607/