1

可能重复:
为什么this在调用对象方法的引用时方法会发生变化?

我以为我懂一点 JavaScript,但我只是注意到,如果你从一个变量执行一个方法,它会改变这一点。我试图找到有关此的信息,但大多数文章都在谈论调用、应用、绑定、事件处理程序/回调等。

var dog = {

  bark: function(){
    console.log('woof');
  },

  speak: function(){
    this.bark();
  }

};

// Test 1
dog.speak(); //woof


// Test 3
var speak = dog.speak
speak(); //TypeError: Object #<Object> has no method 'bark'
4

1 回答 1

-1

我认为您需要将其设置var为说话以外的其他内容。你需要去:

var speaking_var = dog.speak();
speaking_var();

修正你的错别字(你忘了;之后var speak = dog.speak

于 2012-05-06T21:52:59.857 回答