class Person {
constructor(name){
this.name =name
}
says(some){
setTimeout(function(){
console.log(this.name+ ' says ' + some)
}, 1000)
}
//第一种是将this传给self,再用self来指代this
says1(some){
var self = this;
setTimeout(function(){
console.log(self.name+ " says1 " +some);
},1000)
}
//第二种方法是用bind(this),即
says2(some){
setTimeout(function(){
console.log(this.name+ " says2 " + some);
}.bind(this),1000);
}
//第三种方法是箭头函数
says3(some){
setTimeout( () => {
console.log(this.name+ ' says3 ' + some)
}, 1000)
}
}
var p1 = new Person("GG")
p1.says('hi') //undefined says hi
p1.says1('hi') //GG says1 hi
p1.says2('hi') //GG says2 hi
p1.says3('hi') //GG says3 hi
网友评论