Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 扩展所有原型_Javascript_Jquery_Prototype - Fatal编程技术网

Javascript 扩展所有原型

Javascript 扩展所有原型,javascript,jquery,prototype,Javascript,Jquery,Prototype,我有几个jQuery原型方法: $.fn.one $.fn.two $.fn.three 每个都有自己的代码,我想在这三个代码的末尾添加一些东西。比如console.log('done')。这可能吗?您可以将名称重新绑定到调用以前版本的新函数,然后调用console.log() 比如: $.each(["one", "two", "three"], function(index, name) { var originalMethod = $.fn[name]; $.fn[nam

我有几个jQuery原型方法:

$.fn.one
$.fn.two
$.fn.three

每个都有自己的代码,我想在这三个代码的末尾添加一些东西。比如console.log('done')。这可能吗?

您可以将名称重新绑定到调用以前版本的新函数,然后调用
console.log()

比如:

$.each(["one", "two", "three"], function(index, name) {
    var originalMethod = $.fn[name];
    $.fn[name] = function() {
        var result = originalMethod.apply(this, arguments);
        console.log(name + "() done.");
        return result;
    };
});
如果要将此行为应用于jQuery原型中的所有方法,可以迭代
$.fn
本身,只处理函数:

for (var name in $.fn) {
    // Create a new scope so 'originalMethod' is still bound to the
    // right method by the time our new '$.fn[name]()' is invoked.
    (function(originalMethod) {
        if ($.isFunction(originalMethod)) {
            $.fn[name] = function() {
                var result = originalMethod.apply(this, arguments);
                console.log(name + "() done.");
                return result;
            };
        }
    })($.fn[name]);
}

很好,有没有一种方法可以访问所有声明的方法,而不是在数组中列出它们?jQuery原型中的所有方法?你确定吗?我声明的不仅仅是方法,也不是内置的方法。这就是我使用名称数组的原因。您如何区分“内置”(实际上“不是您的”)方法和“您的”方法?不确定jQuery是否以不同的方式存储它们。我想回到第一个问题。有没有办法得到所有的方法,包括内置的和我的?