我有以下代码(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})
答案 0 :(得分:1)
FancyInput
是一个构造函数;您必须使用new
运算符来使用它来构造对象。 new
创建一个新的FancyInput
对象,并将其绑定到构造函数内的this
。
var x = new FancyInput({a: 1});
此错误由严格模式捕获,严格模式在调用没有上下文而不是全局对象的函数时将this
设置为undefined
。顺便说一句,这就是你使用this.FancyInput
做的事情,而且这是不正确的。