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

10-09 02:03