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与语句绑定起来的)解决
评论列表
已有0条评论