-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
这y一part主要的分析箭头函数下的this问题。
在箭头函数下,this是在定义时也就是函数申明时被确定的,它继承了其父的执行期上下文。
var a = 11;
var obj = {
a: '22',
printOne: ()=>{
console.log(this.a);
console.log(a)
},
printTwo: function(){
console.log(this.a);
console.log(a)
}
}
obj.printOne();
obj.printTwo();首先我们定义一个对象obj,对象里有两个方法:printOne和printTwo,其中printOne是箭头函数.
箭头函数本身与printOne平级以key:value的形式,也就是箭头函数本身所在的对象为obj.其父级就是window.换句话说,printOne在定义时,其scope中存的执行期上下文是GO。
console.log(this.a);中的this.a 就是GO中定义的a变量。
console.log(a)中的a,printOne函数在执行前的一刻,形成自己的AO,AO内并没有变量a,所以顺着执行期上下文的链往下找,直到找到了GO中定义的a。
而在printTwo中,this则是谁调用则指向谁,当obj调用printTwo调用printTwo时,函数内的this就指向了obj对象,于是输出obj内部的this.
下一part将call 和apply 以及bind中的this,同时自己实现bind函数。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels