Pourquoi ne puis-je pas accéder aux fonctions "internes" de cet objet? Je me sens comme cela a fonctionné avant.Objets Javascript comme les fonctions
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;
})();
Et lorsque j'essaie d'accéder à cet objet comme ça, j'obtiens une erreur.
var offlinestorage = new OfflineStorage();
offlinestorage.getArticlesByArtNo(); <-- This throws an error 'is not a function'
Ces fonctions sont des symboles locaux privés dans la fonction anonyme. Ceux-ci ne sont pas implicitement rendus visibles en tant que propriétés d'objet en aucune circonstance. Vous pouvez * explicitement * rendre 'getArticlesByArtNo' visible en l'affectant comme une propriété de la fonction' OfflineStorage' que vous renvoyez. – Pointy
Non, cela n'a pas fonctionné avant. Vous avez probablement eu un 'OfflineStorage.prototype.getArticlesByArtNo = fonction ...' précédemment. – Bergi
vous pouvez également mettre la fonction à l'intérieur du constructeur. 'this.getArticlesByArtNo = fonction (params) ....' –