jQuery 基本概念與核心

2021-09-01 17:16:10 字數 3224 閱讀 5255

jquery核心函式和jquery物件實質

jquery重要方法--[參考資料](

1.什麼是jquery?

jquery是js的乙個庫,簡化了js**的書寫(注:jquery語句中用逗號分隔各個css,因為一條css對應乙個物件屬性,物件屬性之間是用逗號分隔而非分號)

舉例:例1:簡化了獲取元素的語句 + 設定樣式的書寫變得更加直觀好記

例2:jquery解決了相容性問題

注:因為jquery是js的乙個庫,引入的時候就是乙個js檔案,所以,我們是可以用原生js**來修改jquery檔案的?

1.入口函式的載入模式不同:

2.重複為同一元素新增事件的不同

1.$ (document).ready(function());

2.$ (function());

3.第一種中的$ 換成jquery

4.第二種裡的$ 換成jquery

我們遵循write less,do more的原則,推薦使用第二種寫法。

1.jquery訪問符衝突問題: jquery框架與其他框架都使用了$ 時,書寫**時,使用$

就會有衝突(後引進的框架覆蓋先引進的)。

2.解決辦法:

1.jquery核心方法是什麼?

jquery的核心方法就是jquery(),或者說$ ().

2.jquery核心方法接收的引數有哪些情況?

3.jquery物件詳解

在後面的分析我們會知道–jquery物件的實質就是jquery.fn.init的例項,因此結合上圖,我們不難發現:

1.自定義的字面量物件就是init的原型物件

2.我們通過jquery.fn.init.protorype或者jquery.prototype均可訪問和修改init的原型

分析完內層,我們接著分析框架中的外層iife:

(1) 將內層iife的返回值(內層的jquery函式)賦給外層變數jquery

(2) 定義全域性變數jquery,$ ,並將上一步jquery的值賦給它們(jquery()與$ ()的效果相同的原因)

3.jquery物件是乙個偽陣列物件

偽陣列物件:

4.使用jquery與使用原生js有什麼區別麼?在jquery中是否能使用原生js**呢?

其次,jquery從定義框架來看,他就是jquery建構函式 + 自定義原型物件 + 自定義原型物件.init 這三個主要部分構成.

其三,jquery方法的定義中,閉包jquery的原型從function(){}改為了自定義物件,那麼其原型鏈上就不再包含call函式.因此,不能通過其他物件呼叫jquery的建構函式.也就是說:jquery.call(obj,…)是錯誤的.

[jquery物件原型鏈如下]:jquery.fn.init例項–jquery.fn/jquery.prototype–object.prototype

1.靜態jquery.ready方法與例項.ready()方法

兩個ready方法

jquery.extend(   

});

說明:

(1).此方法返回乙個類promise物件,當dom載入就緒時,該物件變得可以解析.(即:當dom載入就緒時,可以用該物件訪問其屬性,呼叫其方法等等)

(2).該方法的返回值會被jquery.when,promise.resolve()以及.ready()方法中使用

jquery.fn.ready = function( fn ) ;
說明:.ready(fn)函式–當dom載入就緒時執行fn函式

2.'靜態』型別檢測方法

3.『靜態』**jquery.each(obj,fn)**方法

原始碼定義: .each(obj,fn)方法是直接定義在jquery物件本身上的

(對應的例項.each()方法定義在原型上,其實質是將靜態jquery.each的this換了一下)

each: function( obj, callback )  

}} else

}} return obj;

}

原始碼分析:

(1) 針對類陣列物件,對每乙個數字鍵值i,執行obj[i].callback(i,obj[i]).如果遇到某一項返回值為false,跳出迴圈,終止遍歷

(2) 針對一般物件,使用in操作符,對於每乙個可遍歷鍵值i,執行obj[i].callback(i,obj[i]).如果遇到某一項返回值為false,跳出迴圈,終止遍歷

總結:

(1) 類陣列不遍歷非數字鍵值屬性

(2) 一般物件不遍歷enumerable為false的屬性

(3) 一旦遍歷過程中某一次函式呼叫返回值為false,終止遍歷

(4) 整個.each的返回值為被遍歷的物件

4.『靜態』 **jquery.map(elems,callback,arg)**方法

原始碼定義:

// arg is for internal usage only

map: function( elems, callback, arg ) //將value中的值新增到陣列末尾,並返回新的陣列的長度

}// go through every key on the object,

} else //將value中的值新增到陣列末尾,並返回新的陣列長度

}} // flatten any nested arrays

原始碼分析:

(1) 針對類陣列物件,對每乙個數字鍵值 i ,呼叫callback( elems[ i ], i, arg ),並將其中非null的返回值新增到陣列ret中

(2) 針對一般物件,對每乙個屬性名 i ,呼叫callback( elems[ i ], i, arg ),並將其中非null的返回值新增到陣列ret中

總結:

(1) 類陣列不遍歷非數字鍵值屬性

(2) 一般物件不遍歷enumerable為false的屬性

(3) 便利過程中,某一次函式呼叫返回值為null時,結果不計入ret中(我們可以靈活控制callback方法的返回值來達到我們想要的效果)

(4) 整個jquery.map的返回值為被遍歷的物件被處理後所得到的陣列ret

hive核心基本概念

基於 hadoop 的乙個資料倉儲工具 hive本身不提供資料儲存功能,使用hdfs做資料儲存,hive也不分布式計算框架,hive的核心工作就是把sql語句翻譯成mr程式 hive也不提供資源排程系統,也是預設由hadoop當中yarn集群來排程 可以將結構化的資料對映為一張資料庫表,並提供 hq...

hive核心基本概念

基於 hadoop 的乙個資料倉儲工具 hive本身不提供資料儲存功能,使用hdfs做資料儲存,hive也不分布式計算框架,hive的核心工作就是把sql語句翻譯成mr程式 hive也不提供資源排程系統,也是預設由hadoop當中yarn集群來排程 可以將結構化的資料對映為一張資料庫表,並提供 hq...

Linux核心同步 基本概念

在linux 核心中,為驅動等核心模組提供了互斥與同步的核心機制。如果執行的系統中自始至終只有乙個執行路徑,那麼無須考慮互斥與同步的問題。現在的系統不僅支援多程序而且自持多處理器。當多個執行路徑併發執行時需要保證對共享資源的安全訪問。一般來講,互斥是對資源的排他性安排,而同步則要對程序執行的先後順序...