假设我们有:
var parent = {};
var child = Object.create(parent);
父母可以枚举孩子并以某种方式使用他们的属性和方法吗? 是的,我可以创建一个孩子阵列。但是,有可能忘记与另一个新孩子一起做。
答案 0 :(得分:1)
无视非正统的术语,你不能强制执行继承实例,因此没有可靠的方法去做你想做的事。
试试Post-It; - )
答案 1 :(得分:0)
您需要一些参考。对象不会自动知道其父对象。但是我认为您可以保存父对象本身,而不是保存索引。父项通过引用存储,因此如果父项被修改,则子项的父引用将反映这些更改。这在下面的代码略有改动的版本中显示:
function parent() {
this.index = 0;
// Make children a property (for this test case) and
// pass 'this' (the parent itself) to a child's constructor.
this.children = [new child(this)];
}
function child(parent) {
// Store the parent reference.
this.parent = parent;
}
// Do this after the functions are declared. ;)
var parents = [new parent()];
// Set a property of the parent.
parents[0].test = "Hello";
// Read back the property through the parent property of a child.
alert(parents[0].children[0].parent.test); // Shows "Hello"
答案 2 :(得分:0)
这不是父/子关系。 这是一个原型继承链接。
原型继承不一样。
const a = { x: 1, y: 2, doZ () { } };
const b = Object.create(a);
b.__proto__ === a; // true
老式的版本就是这样做:
function A (x, y) {
this.x = x;
this.y = y;
}
A.prototype.doZ = function () { };
var a = new A(1, 2);
function B () { }
B.prototype = a;
var b = new B();
var c = new B();
var d = new B();
是否应允许a
遍历B
的所有实例?
不是,不。