2012-10-02 193 views
0

我想在下面的声明中使用js创建一个抽象类(模仿oops)。如果我使用下面的每个方法的原型关键字失败(见下面的案例1),但是当我使用没有原型关键字时,它不能确定我是否宣称它correclty ..然而,同样的声明工作时,js文件被声明为主页面,但从对话框调用失败时..我想声明的问题js创建抽象类

if(nsp === undefined) var nsp = {}; // nsp is the namespace 

nsp.abstractCls= function(){} ; //abstractCls is the abstract function & subclass function will extend perfAction methods (overriden methods) 
nsp.abstractCls.prototype ={}; 

//case-1 fails , throws error is not a function (prototype keyword is present) 
nsp.abstractCls.prototype.perfActiOn = function(){ 
    return "success"; 
} ; 

//case-2 this works (no prototype keyword) 
nsp.abstractCls.perfActiOn = function(){ 
    return "success"; 
} ; 

Statment nsp.abstractTbl.prototype.perfTable wroks但不能确定是有原型的关键字调用每个函数正确的方法..

回答

0

尝试取出将该类的原型声明为新对象的行。

+0

tblns.abstractTbl.prototype = new Object();不工作&tblns.abstractTbl = new Object();抛出错误的原型是未定义的方法perfAction – user593029

+0

是的,完全删除该行:) –

+0

没有它不工作..它引发同样的错误..我不知道这是正确的事情做,就好像我们删除原型上每个方法都比函数变得很普遍,因为它可能对抽象类是真实的,但我与子类有相同的问题..当我使用命名空间时,它就是问题的起点。如果我直接使用它没有nsp它的作品!! ..它的作品魅力在此链接给出&我的代码类似于http://phrogz.net/JS/classes/OOPinJS2.html – user593029