我尝试创建HTMLDivElement的子类,但是我遇到了错误:Uncaught TypeError: Illegal constructor
var subC = function() {
HTMLDivElement.call(this);
//....
};
subC.prototype = Object.create(HTMLDivElement.prototype);
答案 0 :(得分:0)
怎么样
function subC() {
//w/e
}
subC.prototype = document.createElement('div');
var x = new subC();
alert(x instanceof HTMLDivElement);
答案 1 :(得分:0)
你无法继承DOM api的大多数,特别是像Node,Element ......
为什么呢?因为它们涉及复杂的依赖注入,这就是你需要通过document.createElement构建Element的原因。
你唯一能做的就是使用构图:
function subC = function(htmlElement){
this.htmlElement=htmlElement;
}
然后你可以在subC
中公开htmlElement的一些属性Object.keys(this.htmlElement).forEach(function(k){this[k]=this.htmlElement[k];},this);
在构造函数中,作为快捷方式。
你需要包装你想要使用的每个方法,我不会冒险将Element.prototype方法添加到subC并期望它们正常运行。