A-A+

JavaScript中,改变this指向的方法有哪些?

2018年12月12日 javascript, 前端基础 暂无评论

使用bind,call和apply至少有三种不同的方法。例如,我在对象monica中有一个名为deductMontlyFee的方法,默认情况下,这个方法中的monica将是monica。

var monica = {
name: 'Monica Geller',
total: 400,
deductMontlyFee: function(fee){
this.total = this.total - fee;
return this.name + ' remaining balance is '+ this.total;
}
}

如果我将monica的deductMontlyFee与另一个对象绑定rachel并将rachel作为bind函数的第一个参数传递,则rachel将是值的值this


var rachel = {name: 'Rachel Green', total: 1500}; var rachelFeeDeductor = monica.deductMonthlyFee.bind(rachel, 200); rachelFeeDeductor(); //"Rachel Green remaining balance is 1300" rachelFeeDeductor(); //"Rachel Green remaining balance is 1100"

 
bind允许您借用方法并设置值this而不调用函数。它只返回函数的精确副本,其值为this。您可以使用相同的函数重新使用相同的函数而不会损害旧函数。

var ross = {name:'Ross Geller', total:250};
var rossFeeDeductor = monica.deductMonthlyFee.bind(ross, 25);
rossFeeDeductor(); //"Ross Geller remaining balance is 225"
rossFeeDeductor(); //"Ross Geller remaining balance is 200"
rachelFeeDeductor(); //"Rachel Green remaining balance is 900"
标签:

给我留言

Copyright © 前端面试题 保留所有权利.   Theme  Ality 桂ICP备17012235号-1

用户登录