JavaScript为对象属性分配函数

时间:2015-10-16 11:23:41

标签: javascript class oop methods

我正在查看JavaScript库的源代码,并在类定义中遇到类似的事情:

var MyClass = function() {
    function doSomething() {
        // function definition
    }

    this.doSomething = function() {
        doSomething();
    };
}

所以,我的问题是:是否有人会这样做,而不是简单地将函数分配给对象方法,如下所示:

this.doSomething = doSomething;

1 个答案:

答案 0 :(得分:2)

这取决于doSomething究竟在做什么。 this在函数中的绑定方式有所不同。如果按照您的示例调用它,它将不会this绑定到该对象,而如果您使用它直接分配给某个属性,则this将绑定到该实例:

var MyClass = function() {
  this.n = "Bob";
  function doSomething() {
    console.log(this.n);
  }

  this.doSomething = function() {
    doSomething();
  };
  this.doSomethingDirect = doSomething;
}

var x = new MyClass();

x.doSomething();        //undefined
x.doSomethingDirect();  //"Bob"