2016-04-14 22 views
0

Bu nesnenin "iç" işlevlerine neden erişemiyorum? Bunun daha önce çalıştığını hissediyorum.Javascript nesneleri gibi işlevler

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; 

})(); 

Ve bu nesneye böyle erişmeye çalıştığımda bir hata alıyorum.

var offlinestorage = new OfflineStorage(); 
offlinestorage.getArticlesByArtNo(); <-- This throws an error 'is not a function' 
+0

Bu işlevler anonim işlevi içinde özel yerel sembolleridir. Bunlar hiçbir koşulda nesne özellikleri olarak örtük olarak görünmezler. * Açık bir şekilde * getArticlesByArtNo'yu, döndürdüğünüz 'OfflineStorage' işlevinin bir özelliği olarak atayarak görünür yapabilirsiniz. – Pointy

+0

Hayır, daha önce çalışmadı. Önceden bir "OfflineStorage.prototype.getArticlesByArtNo = function…" vardı. – Bergi

+0

işlevini de yapıcının içine koyabilirsiniz. 'this.getArticlesByArtNo = işlev (params) ....' –

cevap

-1

Sen böyle dışarıdan erişmek istediğiniz fonksiyonlara dönmek zorunda:

return {OfflineStorage:OfflineStorage, getArticlesByArtNo:getArticlesByArtNo}; 
+2

daha iyi depetargets vardır OP gösterdiği çağrı için işe yaramaz – Bergi

İlgili konular