this关键字

JavaScript 2020-03-01 221

this关键字是函数中一个特殊的只读字段

const o = {  
    name: 'bob',  
    speak() {  
        console.log(我叫${this.name})  
    }  
}  
o.speak()  

当调用speak时,可以得到结果。
如何绑定this是由方法如何调用所决定的,而非函数定义所决定。this绑定到o上,不是因为speak是o的属性,而是它由o调用。个人理解,this存在的条件是该函数是否能由外部条件所调用
例子:

const o = {  
    name: 'bob',  
    speak() {  
        function say () {  
            return this.name  
        }  
        const a = say()  
        console.log(我叫${a})  
    }  
}  
o.speak()  
>>> 我叫undefined  

此时this没有绑定到say中
如何修改:

const o = {  
    name: 'bob',  
    speak() {  
        const self = this  
        function say () {  
            return self.name  
        }  
        const a = say()  
        console.log(我叫${a})  
    }  
}  
o.speak()  
>>>我叫bob  

除了将this赋值外,还可以使用箭头函数(this与语句绑定起来的)解决

标签:JavaScript

文章评论

评论列表

已有0条评论