猿问

一个关于this问题

window.val = 1;var obj={val: 2,
dbl: function () {this.val *= 2;val *= 2;
console. log('val:', val) ;
console. log( 'this.val:', this.val) ;

}
};//说出下面的输出结果obj.dbl();var func = obj.dbl;
func();

这个问题我知道放在console中运行去答案,想要的分析this指向问题。


泛舟湖上清波郎朗
浏览 395回答 1
1回答

一只名叫tom的猫

var func = obj.dbl; func();第一句把函数引用赋值给一个变量,会造成 this 丢失,所以 func 内部的 this 是指向全局对象的。所以函数内部 this.val => window.val => val => 1 。这三个是相等的。所以结果是:this.val = this.val * 2 => 2val = val * 2 => 4val: 4this.val: 4
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答