这几天看书看到关于JavaScript中this绑定问题,因此想在基础上试着自己总结一下内容,加深理解。前端小白,欢迎探讨指正
this的绑定规则
- 默认绑定
- 函数作为对象属性执行(即隐式绑定)
- 函数通过call,apply调用(即显示绑定)
- 函数作为构造函数执行(new 绑定)
添加: 箭头函数中的this绑定
1.默认绑定
在函数执行环境中,如果函数引用不带任何修饰(对照下面其他规则),只是单纯的调用,则使用默认绑定,不管这个函数是否定义在另一个函数中,this始终指向全局对象
var a=1;
function foo(){
var a=2;
console.log(this.a)
}
foo() //1
当函数定义在另一个函数中时
var a=1;
function foo(){
console.log(this.a)
}
function bar(){
var a=2;
foo() //直接不带任何修饰的函数引用
}
bar() //1
若在严格模式下,默认绑定不是绑定全局对象,this会绑定到undefined
var a=1;
function foo(){
"use strict";
var a=