0

以前 Modal 是一个函数并像这样定义

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 
4

3 回答 3

3

正如错误消息告诉您的那样,this.prototypeis 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');
            }
        }
    }
}
于 2013-03-12T19:21:33.267 回答
0
this.prototype.show = function({ // Not working
                 $('#exceptionModal').modal('show');
           });

这是您应该输入的内容。检查牙套。

于 2013-03-12T19:22:39.283 回答
0

this是从 的原型继承的对象Modal。它没有内部[[Prototype]]属性。您只需在对象上定义方法:

this.show = function() {

};
于 2013-03-12T19:23:03.323 回答