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));
}
我有一个简单的应用程序,它会触发一个布尔值并将任务设置为已完成:
但我希望能够使用 "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));
}