2012-10-02 2 views
0

Я пытаюсь создать абстрактный класс (имитировать oops) в js, используя нижеприведенную декларацию. Если я использую ключевое слово prototype для каждого метода ниже, он терпит неудачу (см. Case-1 ниже), однако, когда я использую без ключевого слова prototype, он работает не уверен, что я объявляю его корреляцией .. однако одно и то же объявление работает, когда 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"; 
} ; 

Постулаты nsp.abstractTbl.prototype.perfTable-технические работы, но не уверен, что это правильный подход, чтобы иметь прототип ключевое слово для вызова каждой функции ..

ответ

0

Попробуйте вывести строку, в которой вы объявляете прототип этого класса для нового объекта.

+0

tblns.abstractTbl.prototype = new Object(); не работает & tblns.abstractTbl = new Object(); is throwing error prototype undefined для метода perfAction – user593029

+0

Да, удалите эту строку целиком:) –

+0

Нет, это не работает .. она бросает ту же ошибку. Также я не уверен, что правильно делать так, как если бы мы удалили прототип на каждый метод, чем функция, становится общим для каждого объекта, который я не хочу, потому что он может быть истинным для абстрактного класса, но у меня возникают те же проблемы с подклассом. Еще одна вещь, когда я использую пространство имен, где оно начинается, начинается. если я использую его напрямую без nsp, он работает !! .. он работает с очарованием, как указано в этой ссылке, и мой код похож на тот http://phrogz.net/JS/classes/OOPinJS2.html – user593029

Смежные вопросы