Javascript: 在另一个方法中调用一个方法

Javascript: Call a method inside another method

我有一个简单的应用程序,它会触发一个布尔值并将任务设置为已完成:

但我希望能够使用 "Complete All" 按钮并设置要完成的每个任务。这在这里工作正常:

  completeAll: function() {
    this.tasks.forEach(function(task) {
      task.completed = true;
    });
  },

http://codepen.io/anon/pen/avzMYr

但是我不想直接设置它,而是想使用这样调用的方法,因为我还有很多其他代码需要分离。

  completeTask: function(task) {
    task.completed = true;
  },

  completeAll: function() {
    this.tasks.forEach(function(task) {
      this.completeTask(task);
    });
  },

但这不起作用,请看这里:

http://codepen.io/anon/pen/EVaMLJ

知道如何在 completeAll 方法中调用 "completeTask(task)" 方法吗?

你的问题是 .forEach() 回调中 this 的值与外面的值不一样。您可以保存 this 的外部值,然后使用保存的版本获得您想要的:

  completeAll: function() {
    var self = this;
    this.tasks.forEach(function(task) {
      self.completeTask(task);
    });
  },

您可以使用 Bind 在如下方法中设置 this 值:

completeAll: function() {
  this.tasks.forEach(function(task) {
    this.completeTask(task);
  }.bind(this));
}