【发布时间】: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