gpt4 book ai didi

jquery-plugins - 在 jQuery 中,$.myFunction 和 $.fn.myFunction 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 01:43:28 26 4
gpt4 key购买 nike

我正在研究为 jQuery 编写插件,并且试图了解 $.f 和 $.fn.f 之间的区别

我见过插件作者同时使用两者,或者有时分配 $.f = $.fn.f

有人可以向我解释一下,推理,好处等吗?

最佳答案

查看 jQuery 源代码将把事情弄清楚。顺便说一句,jQuery$引用同一个对象,这就是 jQuery 对象的定义方式:

var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
}
jQuery是一个函数,在 Javascript 中,函数也是 Function 类型的对象.所以 jQuery.f$.f附上 f到 jQuery Function对象,或者如果您愿意,可以将其称为 jQuery 类。

如果您查看 jQuery 的源代码,您会看到 jQuery.prototype已分配给 jQuery.fn
jQuery.fn = jQuery.prototype

因此,每当您将方法(或属性)附加到 jQuery.fn ,如 jQuery.fn.f = .. , 或 $.fn.f = .. , 或 jQuery.prototype.f = .. , 或 $.prototype.f = .. ,该方法将可用于此 jQuery 类的所有实例(同样,Javascript 中没有类,但它可能有助于理解)。

每当您调用 jQuery()函数,如 jQuery("#someID") ,在这一行创建一个新的 jQuery 实例:
return new jQuery.fn.init( selector, context );

这个实例有我们附加到原型(prototype)的所有方法,但没有直接附加到 Function 的方法。目的。

如果您尝试调用未在正确位置定义的函数,则会出现异常。
$.doNothing = function() {
// oh noez, i do nuttin
}

// does exactly as advertised, nothing
$.doNothing();

var jQueryEnhancedObjectOnSteroids = $("body");
// Uncaught TypeError: Object #<an Object> has no method 'doNothing'
jQueryEnhancedObjectOnSteroids.doNothing();

哦,最后把长线剪短并回答你的问题 - 做 $.f = $.fn.f允许您将该函数用作插件或实用方法(在 jquery 术语中)。

关于jquery-plugins - 在 jQuery 中,$.myFunction 和 $.fn.myFunction 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2398007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com