我使用以下函数创建新对象。

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;


可能可以解决此问题,尽管我不确定。

09-16 19:49