我正在尝试理解this javascript代码,它扩展了jquery。我知道在jquery对象上调用extend会将一个tablesorter对象添加到$ object。
我想清除tablesorter对象上的缓存,就像这样
$("#myTable").tablesorter();
$("#myTable").buildParserCache(); //so as to clear the cache. I get undefined is not a function.
$("#myTable").tablesorter().buildParserCache() //also get undefined is not a function
有人可以解释为什么这是不可能的以及如何清除缓存。我知道我正在讨论一些JS设计模式和范围规则,我想了解它们。
(function ($) {
$.extend({
tablesorter: new
function () {
var parsers = [],
widgets = [];
this.defaults = {
...
};
/* debuging utils */
function benchmark(s, d) {
log(s + "," + (new Date().getTime() - d.getTime()) + "ms");
}
function buildParserCache(table, $headers) {
if (table.config.debug) {
var parsersDebug = "";
}
答案 0 :(得分:1)
buildParserCache
函数是在function ()
内部定义的,它从该代码片段的第四行开始,因此只有在显式公开时它才能在函数外部访问 - 看起来它不是& #39; t,所以这实际上是一个私人功能。
公开的方法似乎在/* public methods */
评论后分组。
this.construct = function
函数由此进一步暴露:
$.fn.extend({
tablesorter: $.tablesorter.construct
});
这是在调用$("#myTable").tablesorter()
时最终被调用的函数。