【问题标题】:Javascript objects like functions [duplicate]Javascript对象,如函数[重复]
【发布时间】:2016-08-06 09:33:56
【问题描述】:

为什么我不能访问这个对象的“内部”功能?我觉得这以前奏效过。

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 函数的属性来显式使getArticlesByArtNo 可见。
  • 不,这以前没有用过。你以前可能有一个OfflineStorage.prototype.getArticlesByArtNo = function…
  • 你也可以把函数放在构造函数里面。 this.getArticlesByArtNo = function(params)....
  • @Oriol:有趣的欺骗目标:-)
  • @Bergi 我的搜索中出现的首批结果之一。可能有更好的 depetargets

标签: javascript dexie


【解决方案1】:

您必须像这样从外部返回要访问的功能:

return {OfflineStorage:OfflineStorage, getArticlesByArtNo:getArticlesByArtNo};

【讨论】:

  • 这不适用于 OP 显示的调用
猜你喜欢
  • 2013-07-17
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
相关资源
最近更新 更多