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

请帮助下解释javascript的意思?
function   Element(value,   domEL){
this.domEl   =   domEL;                                
this.domEl.getValue   =   function()   {   return   value;   };
this.domEl.setValue   =   function(newValue)   {   value   =   newValue;   };
this.value   =   value;
this.domEl.buttonObj   =   this;
this.domEl.onclick=this.clickHandler;
}

Element.prototype.clickHandler=function(){
var   buttonObj   =   this.buttonObj;        
alert(buttonObj.domEl.getValue());
}
------------------------------
其他都号懂,除了下面两句.
this.domEl.buttonObj   =   this;--> this.domEl的还懂,但是加了个.buttonObj就不了解了???  
var   buttonObj   =   this.buttonObj;--> 不是应该写成this.domEl.buttonObj??

------解决方案--------------------
这个里面this.domE1.buttonObj=this;
这里的button应该是一个类,如果是作为全局函数运行,那么this指的是window对象,看上去没什么意义。
作为类,是用new操作符来使用的。例如 new button(xx,xx)。这时this指向新建的对象,可以就作为c++语言中的this来理解。但和C++不同的是,这里的this是不可省略的,用于引用类成员。两个this都是指的新建的这个对象。
------解决方案--------------------
不知道,帮顶
------解决方案--------------------
this.domEl.buttonObj = this;-- >this.domEl的还懂,但是加了个.buttonObj就不了解了??? 
-------------------------------------------------
this.domEl是Element的一个属性,this.domEl.buttonObj则是this.domEl的属性
上面这句的意思是 把this(也就是Element自身的指针)作为domEl的一个属性


var buttonObj = this.buttonObj;-- >不是应该写成this.domEl.buttonObj??
-------------------------------------------
从this.domEl.onclick=this.clickHandler这句可以看出
此处的this并不指Element,而是domEl,所以用this.buttonObj直接可访问Element


------解决方案--------------------
作者封装得有问题 不要被他的思路误导

//的确这是个类
function Element(value, domEL){
this.domEl = domEL; //domEL应该是个用于指定和这个类绑定的HTML元素
this.domEl.getValue = function() { return value; }; //取参数value
this.domEl.setValue = function(newValue) { value = newValue; };//给参数赋值
this.value = value;//value 赋值给本类的value 估计是用于记录原始数值
this.domEl.buttonObj = this; //给domEL这个HTML元素类实例 添加一个属性buttonObj 并指向本类的实例
this.domEl.onclick=this.clickHandler;//给domEL添加点击事件
}

Element.prototype.clickHandler=function(){
var buttonObj = this.buttonObj;//将本类的实例送给buttonObj
alert(buttonObj.domEl.getValue());//输出getValue的值
}
------解决方案--------------------
稍微改一下

//这样改就不用创建新的Object 也就是说这个function只是个方法而不是类 上面那个类的方法都送给了domEL这个HTML元素的实例
function Element(value,domEL)
{
domEL.basevalue = value;//给domEL HTML元素实例添加属性basevalue=value
domEl.getValue = function(){return this.basevalue;};//给domEL HTML元素实例添加方法getValue;
domEl.setValue = function(newValue){return this.basevalue = newValue;};//给domEL HTML元素实例添加方法setvalue;
domEL.onclick = function(){alert(this.getValue());} //给domEL HTML元素实例添加事件
}