一、为什么要是使用this
this提供“隐式”传递一个对象引用,简洁易复用
二、this是什么
this所在函数中被使用,一般情况下this是指向所在函数的对象
三、this应用场景
1、this所在函数为对象的一个键值时,this指向该对象
2、this所在函数不属于对象的键值时,调用函数时,this指向window
3、构造函数中的this指向new出来的这个对象
4、函数应用apply、call和bind方法,可以改变this指向这三个方法指定的对象
四、apply、call和bind改变this指向
1、Funtion.prototype.apply 和 Function.prototype.call 方法用法基本一致
apply 传入两个参数,第一个是this指向对象,第二个是函数的形参(数组格式)
call 传入n个参数,第一个是this指向对象,第二个以后都是函数形参
let obj = {
number : 0,
};
//计算形参的总和
let sum = function(){
let sum = this.number;//sum = 0
console.log(arguments);//输出一个数组
for(let i = 0 ; i < arguments.length ; i++ ){
sum += arguments[i]
}
return sum
}
console.log(sum.apply(obj , [1 , 2 , 3]));
console.log(sum.call(obj , 1 , 2 , 3));
2、Function.prototype.bind 传入n个参数,同call一样的传参方式
let obj = {
number : 0,
};
//计算形参的总和
let sum = function(){
let sum = this.number;//sum = 0
console.log(arguments);//输出一个数组
for(let i = 0 ; i < arguments.length ; i++ ){
sum += arguments[i]
}
return sum
}.bind(obj , 1 , 2 , 3));
注意: 箭头函数不绑定Arguments对象 箭头函数只能用于非方法函数 箭头函数不能作为构造函数 箭头函数没有property属性