我在外面看到一个帖子:
但是我还是不明白。有人可以用非常简单的术语向我解释这一点。为什么他们选择以这种方式指定它?
$.fn
只是jQuery.prototype
. 要编写一个 jQuery插件,例如 DataTables,通常首先将一个新的函数属性添加到$.fn
.
简单来说,当您编写jQuery 原型时,$.fn.pluginName
您通过添加一个调用它的新函数来扩展jQuery原型pluginName
。这样,您可以使用例如$("#myElement").pluginName()
. 这基本上就是 DataTables 所做的,它为 jQuery 提供了一个名为dataTablesExt
.
现在,这个插件有几个属性。其中之一,被称为afnSortData
(您也可以参考 using jQuery.prototype.dataTableExt.afnSortData
)。这样,插件属性的作用域就是dataTableExt
对象/插件。DataTables 可以选择在全局命名空间中定义它,但是这样的话,有人可以覆盖afnSortData
,比如说,{}
破坏插件。
在 jQuery 中,fn
属性只是原型属性的别名。
jQuery
标识符(或$
)只是一个构造函数,用它创建的所有实例都继承自构造函数的原型。
资料来源:jQuery.fn 是什么意思?
所以它只代表jQuery.prototype
.
$.fn === jQuery.prototype
.prototype 是什么?
在 JavaScript 中,原型是提供继承的机制。
示例:String.prototype
指的是字符串的原型对象,其中包含(除其他外)可以在任何字符串上调用的方法。