JavaScript无法设置变量--FancyInput示例

时间:2014-07-25 01:25:52

标签: javascript

我有以下代码(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})

1 个答案:

答案 0 :(得分:1)

FancyInput是一个构造函数;您必须使用new运算符来使用它来构造对象。 new创建一个新的FancyInput对象,并将其绑定到构造函数内的this

var x = new FancyInput({a: 1});

此错误由严格模式捕获,严格模式在调用没有上下文而不是全局对象的函数时将this设置为undefined。顺便说一句,这就是你使用this.FancyInput做的事情,而且这是不正确的。