2016-07-12 4 views
1

Я этот код:Получить публичные методы/функции для объекта

var Helper = function() { 

    this.prototype = { 
     loadScripts: function (scripts, path) { 
      scripts = $.map(scripts, function (scr) { 
       return $.getScript((path || '') + scr); 
      }); 

      scripts.push($.Deferred(function (deferred) { 
       $(deferred.resolve); 
      })); 

      return $.when.apply($, scripts); 
     } 
    }; 

    return { 
     loadScripts: loadScripts, 
    }; 
}; 

Но я не могу получить доступ к метод loadScripts с Helper.loadScripts(), как здесь:

// Getting TypeError: FraggyHelper.loadScripts is not a function 
Helper.loadScripts(['foo.js', 'bar.js'], '/path/to/'); 

Почему? И как я могу получить доступ к этой функции?

+0

Где вы взяли, что 'this.prototype' от ??? – Bergi

ответ

1

попробовать этот

var Helper = { 
    loadScripts: function (scripts, path) { 
     scripts = $.map(scripts, function (scr) { 
      return $.getScript((path || '') + scr); 
     }); 

     scripts.push($.Deferred(function (deferred) { 
      $(deferred.resolve); 
     })); 

     return $.when.apply($, scripts); 
    } 
}; 
0
var Helper = (function() { 

    var loadScripts = function (scripts, path) { 
     scripts = $.map(scripts, function (scr) { 
      return $.getScript((path || '') + scr); 
     }); 

     scripts.push($.Deferred(function (deferred) { 
      $(deferred.resolve); 
     })); 

     return $.when.apply($, scripts); 
    }; 

return { 
    loadScripts: loadScripts, 
} })(); 

Вы можете сделать IFFE как выше

0

изменить его на:

var Helper = function() {}; 

Helper.prototype.loadScripts = function (scripts, path) { 
    scripts = $.map(scripts, function (scr) { 
    return $.getScript((path || '') + scr); 
    }); 

    scripts.push($.Deferred(function (deferred) { 
    $(deferred.resolve); 
    })); 

    return $.when.apply($, scripts); 
}; 

// Getting TypeError: FraggyHelper.loadScripts is not a function 
new Helper().loadScripts(['foo.js', 'bar.js'], '/path/to/'); 
Смежные вопросы