我正在努力探索面向对象的Javascript,并且我有一些示例代码可供使用。
它的一部分发布在下面,它创建了一个按钮,这一切都很好,但是当我尝试重新创建它时,我不能放在getDomElement
之后来自this
之后的地方{1}}关键字。
有人可以帮我这个吗?
谢谢: - )
澄清一下 - 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;
};
}
答案 0 :(得分:1)
SaveButton是一个构造函数,可以在您的案例中创建input
类型button
。您将值和click事件处理程序传递给该构造函数。
这里,_dom_element
是该函数的局部变量。并且您将click事件绑定到它。
现在回答你的问题:
this.getDomElement = function() {
return _dom_element;
};
getDomElement
是该构造函数的属性。这将附加到您将使用构造函数创建的所有按钮。
由于_dom_element
仅为该功能的私有/本地,getDomElement
充当api以获取对该button
的引用。
JavaScript如何知道如何处理?
它只是附加到该构造函数的属性。所以当你打电话时
var button = new SaveButton("value", callbackfunction);
var reference = button.getDomElement();
// reference.style.background do anything with that button now.
它将在该按钮对象中查找属性并调用该函数。反过来,当您使用构造函数创建对象时,会为该对象创建一个范围。因此,属性getDomElement
将成为该范围的一部分,并且能够返回_dom_element
引用。