站在初学者的角度,来说明this的用法
1.this的由来
为了更好的简化代码,增强代码的阅读性,引入this关键字
2.this的使用
了解this的使用环境是要和对象一起使用他是通过绑定规则来实现this传递指向指向正确的对象。
四种绑定规则
- 默认绑定
- 隐式绑定
- 硬绑定
- 构造函数绑定
2.1默认绑定
定义一个函数
<script>
var name = 'web 全栈开发';//window.name
function sayHi() {
console.log(`名字是:${this.name}`);
console.log(`名字是:${whidow.name}`);
};
sayHi();//window.sayHi();
sayHi()
</script>
代码解释:
全局定义了sayHi函数,并调用sayHi,函数内部使用了this关键字,那么执行this这行代码的对象是sayHi(一切皆对象),sayHi是被定义在全局的作用域中,所以他是window对象的一个方法或者属性而已。当在全局作用域下调用该方法时,就会触发默认绑定规则
2.2隐式绑定
如果是一个对象中使用了this关键字(方法中),每当在调用对象的的方法就会触发隐式绑定
var name = '妹子'
var a = {
name:"开展",
b: function () {
console.log(this.name);//'开展'
}
}
a.b()
var aa = a.b
aa()// '妹子'
2.3硬绑定
通过改变this指向的方法强行改变指向
call apply bind
2.4构造函数绑定
构造函数中的this绑定