jQuery兩種擴充套件

2021-06-04 16:21:16 字數 2339 閱讀 8714

如下

**如下:

jquery.extend = jquery.fn.extend = function() ;

我們可以用$.extend去擴充套件自定義的物件,如

**如下:

var myself = ;

$.extend(myself, });

myself.setname("tom");

通過$.extend為物件myself新增了setname方法。但這裡主要討論$.extend如何構建jquery庫的。不知注意到上面**中jquery.extend和jquery.fn.extend是同乙個函式。我們瀏覽下jquery庫,發現有些方法是通過呼叫jquery.extend擴充套件的,有些則是通過呼叫jquery.fn.extend擴充套件的。

下面分別討論:

1,通過jquery.extend擴充套件

我們知道jquery.extend中的jquery型別是function,即typeof jquery值為字串「function」。如果把jquery當成乙個類,jquery.extend相當於為該類新增了靜態方法extend。靜態方法是不需要new乙個例項再去呼叫的,通過「類名+方法名」直接呼叫。即jquery.extend(...),jquery又被賦值給$。因此我們更習慣$.extend(...)。

原始碼中直接呼叫jquery.extend方法,只傳乙個引數。如下

**如下:

jquery.extend(,

...});

我們知道extend中如果只傳乙個引數,那麼將執行該句

**如下:

if ( length === i )

即擴充套件自己,而這裡的this則是function jquery。也就是說給function jquery新增了許多靜態方法,這些方法都可以直接通過jquery.xx(或$.xx)方式來呼叫,而不是先執行(呼叫)jquery方法再去呼叫xx,如$("#id").xx。也許下面這個例子更容易理解

**如下:

function fun(){}//定義乙個類(函式)

//為該類(函式)新增乙個靜態方法extend

fun.extend=function(obj)

//呼叫extend為該類新增了靜態屬性name,靜態方法method1

fun.extend(});

//輸出name,prototype,extend,method1

console.dir(fun)

因此,jquery中的isfunction, isarray, iswindow等都是靜態方法,只能通過$.isfunction, $.isarray, $.window引用。而不能通過$("...").isfuction, $("...").isarray, $("...").iswindow方式引用。

2,通過jquery.fn.extend擴充套件

jquery.fn等於jquery.prototype,也就是說給function jquery的原型(prototype)上掛了個extend方法。通過呼叫jquery.fn.extend(object)來擴充套件時(注意只傳乙個引數object),extend函式中仍然會執行

**如下:

if ( length === i )

**如下:

function fun(){}//定義乙個類(函式)

//給該類原型上新增乙個方法extned

fun.prototype.extend = function(obj)

//呼叫extend方法給fun.prototype上新增屬性,方法

fun.prototype.extend(})

//輸出name,extend,method1

console.dir(new fun())

因此擴充套件的屬性或方法都新增到jquery物件上了。如bind, one, unbind等可以通過$("...").bind, $("...").one, $("...").unbind方式呼叫。卻不能通過 $.bind, $.one, $.unbind方式呼叫。

jquery與prototype一樣都是通過extend方法擴充套件出整個庫的。相對來說jquery的擴充套件方式更難理解一些。

總結如下:

1,jquery.extend()是給function jquery新增靜態屬性或方法。

2,jquery().extend()是給jquery物件新增屬性或方法。

PHP的兩種擴充套件庫介紹

pear pecl都是php擴充套件模組的集合。擴充套件php有兩種方法 一種是用純粹的php 寫函式和類。pear在英文中是梨子的意思。pear將php程式開發過程中常用的功能編寫成類庫,涵蓋了頁面呈面 資料庫訪問 檔案操作 資料結構 快取操作 網路協議等許多方面,使用者可以很方便地使用。它是乙個...

php擴充套件庫兩種安裝方式

pecl擴充套件庫是通過pear 打包系統來的 php 擴充套件庫倉庫。pecl命令類似centos的yum工具。php的擴充套件庫可以通過pecl工具進行安裝,也可進行原始碼編譯安裝。比如我們要安裝擴充套件庫solr,樣例如下 pecl install solr 2.4.0.tgz 2 原始碼安裝...

讀jq之二(兩種擴充套件)

jquery.extend jquery.fn.extend function 我們可以用 extend去擴充套件自定義的物件,如 var myself extend myself,myself.setname tom 通過 extend為物件myself新增了setname方法。但這裡主要討論 e...