我試圖定義一個類,在它的構造函數,實例化其他對象,並將它們傳遞對自身的引用:參考當前對象的構造
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