Почему я не могу получить доступ к «внутренним» функциям этого объекта? Я чувствую, что это сработало раньше.Объекты Javascript, такие как функции
var OfflineStorage = (function() {
function OfflineStorage() {
var db = new Dexie("OfflineStorage");
db.version(1).stores({
articles: "ArtNo,Description,Unit"
});
}
function getArticlesByArtNo(params) {
var regex = new RegExp(params.search, "i");
return db.articles
.filter(function (article) { regex.test(article.ArtNo) })
.toArray();
}
return OfflineStorage;
})();
И когда я пытаюсь получить доступ к этому объекту, например, я получаю сообщение об ошибке.
var offlinestorage = new OfflineStorage();
offlinestorage.getArticlesByArtNo(); <-- This throws an error 'is not a function'
Эти функции являются частные локальные символы внутри анонимной функции. В любом случае они не могут быть явно видны как свойства объекта. Вы можете * явно * сделать 'getArticlesByArtNo' видимым, назначив его как свойство возвращаемой функции' OfflineStorage'. – Pointy
Нет, это не сработало. У вас, вероятно, раньше была функция «OfflineStorage.prototype.getArticlesByArtNo = function ...». – Bergi
вы также можете поместить функцию внутри конструктора. 'this.getArticlesByArtNo = function (params) ....' –