Javascript子类化和createElement

Javascript子类化和createElement,javascript,dom,prototype,subclass,Javascript,Dom,Prototype,Subclass,函数A(){ this.myProp=document.createElement(“div”);} 这里发生的事情是,我最终得到了一个id为“再见”的div。我想要的是两个具有指定ID的div 我已经能够通过创建创建元素的“a”方法来解决这个问题 如果不使用该方法,我如何修复它?在创建新B()时,必须调用构造函数A(): 如果希望B实例继承自A.prototype,请不要将B.prototype设置为A实例,而是使用Object.create()-或传统浏览器的自定义实现-以避免构造函数调用:

函数A(){ this.myProp=document.createElement(“div”);}

这里发生的事情是,我最终得到了一个id为“再见”的div。我想要的是两个具有指定ID的div

我已经能够通过创建创建元素的“a”方法来解决这个问题


如果不使用该方法,我如何修复它?

在创建
新B()时,必须调用构造函数
A()

如果希望
B
实例继承自
A.prototype
,请不要将
B.prototype
设置为
A
实例,而是使用
Object.create()
-或传统浏览器的自定义实现-以避免构造函数调用:

var clone = Object.create || (function() {
    function Dummy() {}
    return function(obj) {
        Dummy.prototype = obj;
        return new Dummy;
    };
})();

B.prototype = clone(A.prototype);

不起作用的代码是什么样子的?第115行开始,第337行结束感谢您的帮助回复。我不太明白为什么要使用Object.create()方法。你能解释一下吗?@willat8:构造函数用于创建和初始化实例,即分配实例所需的资源,但在原型对象中这是多余的;在您的例子中,这种资源的一个例子是
myProp
元素;在其他情况下,后果可能更为严重:例如,考虑在初始化时将自己注册为事件侦听器的对象;你想让一个子类的原型对象来做这个吗?@ WelAT8:或者使用你的代码:考虑一个第三类<代码> c>代码>,扩展了<代码> b<代码>;使用
C.prototype=newb('foo')
意味着您将在
document.body
中添加一个与原型对象对应的
div
。除了使用“a”实例之外,我可以将“B.prototype”设置为“a”的引用吗?如中所示,B.prototype=A@willat8:您可以使用
B.prototype=A.prototype
,但这意味着
A
B
实例将共享同一个原型,即不可能重写方法
function A() {
    this.myProp = document.createElement("div");
}

function B(id) {
    A.call(this); // !!!
    this.myProp.id = id;
    document.body.appendChild(this.myProp);
}
var clone = Object.create || (function() {
    function Dummy() {}
    return function(obj) {
        Dummy.prototype = obj;
        return new Dummy;
    };
})();

B.prototype = clone(A.prototype);