有没有办法在javascript代码中调用“benchmark”

时间:2014-07-24 21:11:15

标签: javascript jquery

我正在尝试理解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 = "";
            }

1 个答案:

答案 0 :(得分:1)

buildParserCache函数是在function ()内部定义的,它从该代码片段的第四行开始,因此只有在显式公开时它才能在函数外部访问 - 看起来它不是& #39; t,所以这实际上是一个私人功能。

公开的方法似乎在/* public methods */评论后分组。

this.construct = function函数由此进一步暴露:

$.fn.extend({
    tablesorter: $.tablesorter.construct
});

这是在调用$("#myTable").tablesorter()时最终被调用的函数。