arrow function的简写方法正在学习中.......
class Animal {
constructor(){
this.type = 'animal'
}
says(say){
setTimeout(function(){
console.log(this.type + ' says ' + say)//这里是this指代的是全局对象,而不是在构造方法里面的this指代的animal对象,
在构造方法之外的this代表的都是全局对象,可以共享的。
}, 1000)
}
}
var animal = new Animal()
animal.says('hi') //undefined says hi
所以上面的报错解决方法有两种:
第一种是将this传给self,再用self来指代this
says(say){
var self = this;
setTimeout(function(){
console.log(self.type + ' says ' + say)
}, 1000)
第二种方法是:用bind(this)
,
says(say){
setTimeout(function(){
console.log(this.type + ' says ' + say)
}.bind(this), 1000)
这时候bind后面的this,代表的就是构造方法里面的this实例对象 ,也就是animal
返回的结果:
es6 的arrow function
最新推荐文章于 2023-09-26 15:18:25 发布