我试图定义一个类,在它的构造函数,实例化其他对象,并将它们传递对自身的引用:参考当前对象的构造
var Child = function(m) {
var mother = m;
return {
mother: mother
}
}
var Mother = function() {
var children = makeChildren();
return {
children: children
}
function makeChildren() {
var children = [];
for (var i = 0; i < 10; i++) {
var c = new Child(this); // <--- 'this' is an empty object here
children.push(c)
}
return children;
}
}
这不起作用,和儿童实例最终会在其mother
属性中有一个空对象。什么是正确的方法来做到这一点?
设置'this.children = makeChildren()'工作。这通常被认为是比从构造函数返回对象更好的模式吗? – Andre
它只是当做一个使用'new'语法的构造函数时,你得到一个'this'来处理(并且这个继承自原型等)。如果你打算有一个函数返回它自己的东西,不需要访问这个继承或访问原型方法,你可能会使它成为一个普通的非构造函数。 (并且将名称改为非大写字母,Convention认为对于需要'new'操作符的东西) – hugomg