您的位置:首页 > 其它

360一道关于this的题目

2018-01-20 10:43 302 查看


原题目是这样子的:

window.val = 1;

var obj = {
val: 2,
dbl: function () {
this.val *= 2;
val *= 2;
console.log(val);
console.log(this.val);
}
};
// 说出下面的输出结果
obj.dbl();
var func = obj.dbl;
func();


this呢其实就是这样,分清楚调用就好了。。。

obj中的没有指定调用。默认从函数中查找。如果没有则往上一级查找。。。所以  上面的式子可以写成这样

window.val = 1;

window.val = 1;

var obj = {
val: 2,
dbl: function () {
this.val *= 2;
val *= 2;
console.log(val);
console.log(this.val);
}
};
// 说出下面的输出结果
obj.dbl();
var func = obj.dbl;
func();


这样一来答案就清晰明了了

 obj.dbl();这个调用者是obj。。所以其中的this指向obj对象     // 2 4

 var func = obj.dbl;

 func();    

这个呢是全局window调用的func()所以this指向window   
不相信的话可以在这里console.log(this)。。。就知道每次调用的是谁。。。this到底是指向谁的 

因为window.val 第一次运算结果是2

所以最后的结果就是   8     8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: