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

Javascript:在另一个方法中调用一个方法,javascript,function,vue.js,Javascript,Function,Vue.js,我有一个简单的应用程序,可以触发布尔值并将任务设置为完成: 但我希望能够使用“全部完成”按钮,并将每个任务设置为完成。这一点很好: completeAll: function() { this.tasks.forEach(function(task) { task.completed = true; }); }, 但是我不想直接设置它,而是想使用一个这样调用的方法,因为我还有很多其他代码需要分离 completeTask: function(task)

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

但我希望能够使用“全部完成”按钮,并将每个任务设置为完成。这一点很好:

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

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

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

  completeAll: function() {
    this.tasks.forEach(function(task) {
      this.completeTask(task);
    });
  },
但这不起作用,请参见此处:


你知道如何在completeAll方法内部调用“completeTask(task)”方法吗?

你的问题是
.forEach()
回调内部的
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));
}

欢迎来到JS对这是什么的解释。它并不总是这样,除非你明确地关闭它。