Я использую следующую функцию для создания новых объектов.
function newObj(o) {
var params = Array.prototype.slice.call(arguments,1);
function F() {}
F.prototype = o;
var obj = new F();
if(params.length) {
obj.init.apply(obj,params);
}
return obj;
}
И это работает хорошо большую часть времени. Однако один из моих базовых «классов» теперь определен как наследующий от другого базового класса
SPZ.EditablePuzzle = function () {
// function and variable definitions
return {
///some methods and properties
}
}();
SPZ.EditablePuzzle.prototype = SPZ.Puzzle;
Теперь, когда я использую newObj () для создания нового SPZ.EditablePuzzle, функция init не определяется, даже если она определена в SPZ.Puzzle, и я проверяю, что EditablePuzzle запускается после Puzzle
Почему моя функция newObj не может найти функцию init? Разве он не должен автоматически смотреть на прототип, как только он не может найти его в самом объекте?