2012-10-02 121 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