闭包中的this

var name="pushline";//全局变量
var obj=new Object();
obj.name="jms";
obj.getName=function () {
	return this.name;
}
alert(obj.getName());//返回obj对象name
var name="pushline";//全局变量
var obj={
	name:"jms",
	getName:function () {
		return this.name;
	}
}
alert(obj.getName());//返回obj对象name
var name="pushline";
var obj={
	name:"jms",
	getName:function () {
		return function  () {
			return this.name;
		}
	}
}
alert(obj.getName()());//返回全局变量"pushline",因为闭包中的this指windos
alert(obj.getName().call(obj));//返回"jms",因为call()强制改变了this的指向
var name="pushline";
var obj={
	name:"korbe",
	getName:function  () {
		var self=this;//这里的this指obj对象
		return function  () {
			return self.name;//闭包中的this指windos,现在指向obj。对比上一个方法。
		}
	}
}
alert(obj.getName()());
原文地址:https://www.cnblogs.com/hideonbush/p/7490766.html