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