function 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为“再见”的div。我想要的是具有指定ID的两个div。
我已经能够通过创建一个创建元素的“A”方法来解决这个问题。
如何在不使用该方法的情况下修复它?
答案 0 :(得分:1)
创建A()
时,您必须调用构造函数new B()
:
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);