如何创建我自己的类的实例,但使其行为类似于节点

时间:2016-02-24 09:57:04

标签: javascript dom prototype

编辑:我将此问题视为this的副本。

我不能围绕这个简单的概念。我想创建一个类,比如说:

function InputExt() {
    ...
}

然后我想做这样的事情:

InputExt.prototype = document.createElement('input');

但这只会提供InputExt的{​​{1}}方法和属性,而Node个实例不会表现为InputExt,也不会表现为Node }。

我如何实现以下行为?

HTMLInputElement

2 个答案:

答案 0 :(得分:1)

 function InputExt() {
     var element = document.createElement('input');
     for (prop in InputExt.prototype) {
         element[prop] = InputExt.prototype[prop];
     }
     return element;
 }


 InputExt.prototype.info = function() {
     console.log(this);
 }


 var element = document.body.appendChild(new InputExt());
 element.info();

答案 1 :(得分:0)

如果我找对你,我认为你需要扩展DOMElement,因为document.body.appendChild正在创建。

更多详情How can I extend the document object?

这是一个如何看起来像

的例子
function InputExt(){}

InputExt.prototype.inputnode= document.createElement('input')

InputExt.prototype.info = function(domInfo) {
  console.log(this.inputnode[domInfo])
}

// access your own object
var mynode = new InputExt();
mynode.info("attributes")

// access document prototype
HTMLInputElement.prototype.logme = function(){
   console.log('me')
}

var element = document.body.appendChild(mynode.inputnode);
element.logme()