this的由来和使用规则

329 阅读1分钟

站在初学者的角度,来说明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绑定