我只是致力于了解面向对象的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引用。

07-24 09:22