js中的this引用的是函数据以执行的环境对象,而js教程中所说的环境对象分为全局环境和函数所定义的局部环境,那么以下代码中
var color = 'red';
function showColor() {
console.log(this.color);
}
showColor(); // 'red',因为this指向window
var o = {
color: 'blue'
};
o.showColor = showColor;
o.showColor(); // 'blue' ????这里的this指向的是o?o也可以构成一个执行环境?
换一种思路自然迎刃而解。
var color = 'red'; function showColor() { console.log(this.color); } var o = { color: 'blue' }; o.showColor = showColor;
o.showColor(); /*o.showColor = showColor以及o.showColor()等同于如下*/ var o = { color: 'blue', showColor:function(){ showColor(); } };
你再想想此时this指向的应该是谁。。。。。自行理解