gpt4 book ai didi

Javascript 子类化和 createElement

转载 作者:行者123 更新时间:2023-11-30 06:08:29 26 4
gpt4 key购买 nike

函数 A() { this.myProp = document.createElement("div");

function B(id) {
this.myProp.id = id;
document.body.appendChild(this.myProp); }

B.prototype = new A();

window.onload = function() {
new B("hello");
new B("goodbye"); }

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

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

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

最佳答案

创建new B()时必须调用构造函数A():

function A() {
this.myProp = document.createElement("div");
}

function B(id) {
A.call(this); // !!!
this.myProp.id = id;
document.body.appendChild(this.myProp);
}

如果你想让 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);

关于Javascript 子类化和 createElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com