【发布时间】:2014-02-23 14:37:48
【问题描述】:
原型是一个被继承的对象?通过对象的所有实例,例如下面示例中的 child。
它必须是父级的实例,否则父级的原型不会被继承?
在这种情况下,目标是为每个子实例创建一个单独的数组,该数组继承自父项。
我不确定如何准确地实现这一目标。我知道extend。
extend 方法是否只是简单地将原型复制到一个新对象上并将新方法也应用到它上面?
我的代码示例+jsfiddle:
function parent(){
}
parent.prototype.arr = [];
parent.prototype.add = function(item){
this.arr.push(item);
}
parent.prototype.show = function(){
for(var i = 0; i < this.arr.length; ++i){
$('body').append(this.arr[i]);
}
}
function child(childname){
this.add(childname);
}
child.prototype = new parent();
var child1 = new child('child1');
var child2 = new child('child2');
child2.show();//this should only show child2?
【问题讨论】:
-
parent.prototype.arr = [];这总是错的;你只有一个实例。 -
child.prototype = new parent();没有任何用处。创建 Object 的公共 prototype 属性与从其构造函数继承的私有[[Prototype]]完全不同。 -
您有很多链接和文档要阅读。假设您还不知道原型是如何工作的,我创建了以下答案:stackoverflow.com/questions/16063394/…
标签: javascript inheritance prototype instance javascript-objects