jQuery(或任何其他对象)方法的Javascript重写

jQuery(或任何其他对象)方法的Javascript重写,javascript,jquery,javascript-objects,dom-events,Javascript,Jquery,Javascript Objects,Dom Events,在这个中,作者为一些定制的敲除绑定编写了一个测试。作为测试的一部分,他/她似乎扩展了jQuery 是我对第30行的理解。 $.fn.on=function(event,callback){被它覆盖,没有后续清理jQuery在其原型上定义为的任何内容?第36行和淡出的问题相同 以下是相关的代码片段,您可以检查小提琴以查找清理: 30. $.fn.on = function(event, callback) { 31. ... ... 36. $.fn.fadeOut = function(sp

在这个中,作者为一些定制的敲除绑定编写了一个测试。作为测试的一部分,他/她似乎扩展了jQuery

是我对第30行的理解。 $.fn.on=function(event,callback){被它覆盖,没有后续清理jQuery在其原型上定义为
的任何内容?第36行和淡出的问题相同

以下是相关的代码片段,您可以检查小提琴以查找清理:

30. $.fn.on = function(event, callback) {
31.   ...
...
36. $.fn.fadeOut = function(speed, callback) {
37.   ...

一般来说,我是在问,与jquery没有直接关系(即jquery可能有或可能没有任何关于
和淡出的东西),我正在考虑在生产代码中嵌入类似的测试,我不希望我的测试改变jquery或任何“真实的”对象我的测试可能就是这样的。注意,即使有清理,似乎还有其他事件驱动(异步)调用可能会遇到更改的实现-我说得对吗?

它不仅覆盖了原型中定义的任何内容,实际上还替换了它。
$.fn
属性是jQuery对象的原型副本,因此
$.fn
是实际的原型,即
$.fn==jQuery.prototype

您是正确的,您不能将这样的更改隔离到您自己对该对象的调用中,只要您的更改有效,它还会影响调用该对象的任何其他代码


但是,由于jQuery是严格单线程的,因此您可以更改原型,使用对象,然后再将原型更改回来,而不会影响其他代码。只要代码在不中断的情况下运行,就不会处理任何事件。

是的,它覆盖jQuery的原型。它不会扩展任何内容,
$。fn
是一个示例s表示jQuery的原型(is
jQuery.fn=jQuery.prototype={…}
),因此覆盖
$.fn.on
会吹走jQuery


查看这里的日志:

谢谢-回答得很好。我先构造新的“测试”元素,然后只修改它们自己的原型的方法会更好/更孤立吗?@G.Stoynev:如果你指的是jQuery对象的原型,那么所有实例只有一个原型(顺便说一句,这适用于所有对象类型),这样就不会更加孤立。