我使用以下函数创建新对象。
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时,即使在SPZ.Puzzle中定义了初始化函数,也未定义它,并且我确保EditablePuzzle在Puzzle之后运行
为什么我的newObj函数找不到init函数?一旦在对象本身中找不到它,它是否不应该自动在原型中查找?
最佳答案
我怀疑继承设置不正确。尝试做
SPZ.EditablePuzzle.prototype = new SPZ.Puzzle;
可能可以解决此问题,尽管我不确定。