日期:2014-05-16  浏览次数:20283 次

javascript里的this例子讲解
网上看到一篇关于this的讲解,有时候还是回搞错this的上下文,在这里再复习一下

原文:http://www.cnblogs.com/miqi2214/archive/2009/04/10/1433202.html

function clickFun(value,elemID){
	this._value = value;
			
	this._elem = document.getElementById(elemID);
			
	this._elem.ButtonFun = this;//this指向clickFun对象
			
	this._elem.onclick = this.clickHandler;//来自与原型
}
		
clickFun.prototype.clickHandler = function(){
			
	//这里为什么this是指向_elem的引用,即指向document.getElementById(elemID);
	//因为clickHandler赋给了onclick,而onclick的调用者是_elem,所以他的执行上下文为_elem对象
	//所以buttonFun是指向clickFun的引用
	var buttonFun = this.ButtonFun;
			
	var value = (buttonFun && buttonFun._value) ? buttonFun._value : "unknow value";
			
	alert("value" + value);
			
	alert("this.value" + this.value);
}
		
window.onload = function(){
	new clickFun("赋给程序的值","bt");
}



<button type="button" value="我是按钮的值" id="bt">click me~</button>