2013-03-12 4 views
0

Ранее Модальные была функция и определить, как этоИспользование this.prototype.show в JavaScript

function Modal (heading){ 
       this.modal="Hello"; //works fine 
       Modal.prototype.show = function(){ // Not working 
        $('#exceptionModal').modal('show'); 
       }  
} 

Я попытался преобразовать его для requirejs модуля

define("wbModal", function(){ 
    return{ 
      Modal: function(heading){ 
        this.modal="Hello"; //works fine 
        this.prototype.show = function(){ // Not working 
         $('#exceptionModal').modal('show'); 
        } 
      } 
    } 
} 

Я не могу найти, что случилось с что, если this.modal может работать так, почему this.prototype.show не работает?

Ниже приведены можно б найти в консоли:

Uncaught TypeError: Cannot set property 'show' of undefined 

ответ

3

Точно так, как сообщение об ошибке говорит вам, this.prototype является undefined, поэтому, конечно, вы не можете установить свойства на нем. Вы путаете анонимные функции с функциями конструктора.

Попробуйте это:

define("wbModal", function() { 
    function ModalConstructor(heading) { 
     this.modal = "Hello"; 
    } 

    ModalConstructor.prototype.show = function() { 
     // you'll probably want to use `this` in some way here 
     $('#exceptionModal').modal('show'); 
    }; 

    return { 
     Modal: ModalConstructor 
    } 
} 

Или это:

define("wbModal", function() { 

    return { 
     Modal: function(heading) { 
      this.modal = "Hello"; 
      this.show = function() { 
       $('#exceptionModal').modal('show'); 
      } 
     } 
    } 
} 
+0

Это был объект ранее, и я пытаюсь преобразовать его в модальный. Так что у него были конструкторы. Как я могу заставить его работать на меня? –

+1

Пожалуйста, отредактируйте вопрос, чтобы показать, что было раньше, как вы его вызывали раньше, и как вы пытаетесь это назвать. –

+0

Я добавил более подробно в вопрос. –

0
this.prototype.show = function({ // Not working 
       $('#exceptionModal').modal('show'); 
      }); 

Это то, что вы должны печатать. Проверьте скобки.

+0

с его синтаксической ошибкой. –

+0

Этот синтаксис неверен. ОП были в порядке. – cHao

0

this - это объект, который наследуется от прототипа Modal. Он не имеет внутреннего [[Prototype]]. Вы просто определяете метод на объекте:

this.show = function() { 

}; 
+0

Нет, я хочу использовать его как конструктор. –

+0

Итак, вы хотите, чтобы вещи наследовались от объектов, которые наследуются от «Модаля»? – 0x499602D2

+0

Я просто хочу определить конструктор для функции и стиль определения класса не может быть изменен. –

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