我只是致力于了解面向对象的Java脚本,还有一些示例代码需要解决。
它的一部分发布在下面,可以创建一个按钮,所有这些都可以正常工作,但是当我尝试重新创建它时,我无法在getDomElement
关键字之后放置引用this
的位置。
有人可以帮我吗?
谢谢 :-)
需要说明的是-getDomElement
似乎不是变量,但可以工作。这是某种财产吗?
var SaveButton = function(value, click_action){
var _dom_element = document.createElement("input");
_dom_element.type = "button";
_dom_element.value = value;
_dom_element.onclick = function(){
click_action.call(null);
};
this.getDomElement = function() {
return _dom_element;
};
}
最佳答案
SaveButton是一个构造函数,可以在您的情况下创建input
类型button
。您正在将值和click事件处理程序传递给该构造函数。
在这里,_dom_element
是该函数的局部变量。然后将click事件绑定到该事件。
现在您的问题:
this.getDomElement = function() {
return _dom_element;
};
getDomElement
是该构造函数的属性。这将附加到要使用构造函数创建的所有按钮上。由于
_dom_element
仅对该函数是私有的/本地的,因此getDomElement
充当获取对该button
的引用的api。JavaScript如何知道该怎么做?
它只是附加到该构造函数的一个属性。所以当你打电话
var button = new SaveButton("value", callbackfunction);
var reference = button.getDomElement();
// reference.style.background do anything with that button now.
它将在该按钮对象中查找属性并调用该函数。反过来,当您使用构造函数创建对象时,将为该对象创建一个作用域。因此,属性
getDomElement
将成为该范围的一部分,并且能够为您返回_dom_element
引用。