jQuery建構函式簡單介紹
在使用jQuery獲取元素物件的時候,我們通常是用以下方式:
[JavaScript] 純文字檢視 複製程式碼$("li")
上面的由於過於普通,可能很少人對它感覺特別奇怪。
不過上面的方法獲取的也是一個例項物件,好像我們並沒有用到new運算子來建立。
關於建構函式和new的作用可以參閱以下兩個文章:
(1).建構函式可以參閱javascript建構函式一章節。
(2).new運算子可以參閱js new運算子的作用一章節。
其實jQuery是通過一個比較巧妙的方式來實現了建構函式的功能。
先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var Antzone=function(name,age){ this.name=name; this.age=age; } Antzone.prototype={ constructor:Antzone, init:function(msg){ this.say(msg); }, say:function(msg){ console.log(this.name+msg); } }; var antzone=new Antzone('螞蟻部落',3); antzone.init('歡迎您');
其實jQuery就是採用上面的方式,但是方式更加高明一些,看jQuery的原始碼:
[JavaScript] 純文字檢視 複製程式碼// Define a local copy of jQuery var jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery ); },
從程式碼可以看出,jQuery.fn.init()才是真正的建構函式,這樣我們建立物件例項的時候就沒必要new jQuery()。
看一下jQuery.fn的原始碼:
[JavaScript] 純文字檢視 複製程式碼jQuery.fn = jQuery.prototype = {...
說明此函式是jQuery的原型物件,也就是說原型物件中有int()這麼一個方法,利用它實現了例項化功能。
這裡我們又有一個疑問,那就是既然init()才是建構函式,那麼我們為jQuery新增的例項方法,會不會無法呼叫。
jQuery的解決方式如下:
[JavaScript] 純文字檢視 複製程式碼// Give the init function the jQuery prototype for later instantiation jQuery.fn.init.prototype = jQuery.fn;
把jQuery的圓形物件賦值給int()原型物件,那麼int()也就具有jQuery的原型的所有方法。
相關文章
- js Date()建構函式簡單介紹JS函式
- javascript建構函式的繼承簡單介紹JavaScript函式繼承
- javascript非建構函式繼承簡單介紹JavaScript函式繼承
- jQuery常用的動畫函式簡單介紹jQuery動畫函式
- jQuery的index()函式用法簡單介紹jQueryIndex函式
- jquery回撥函式中this的指向簡單介紹jQuery函式
- Dart建構函式介紹Dart函式
- jQuery的text()、html()和val()函式用法簡單介紹jQueryHTML函式
- C++移動建構函式以及move語句簡單介紹C++函式
- javascript匿名函式簡單介紹JavaScript函式
- python內建函式的簡單使用和介紹Python函式
- 函式表示式和函式宣告簡單介紹函式
- new運算子作用域建構函式建立物件的過程簡單介紹函式物件
- jQuery構造物件例項簡單介紹jQuery物件
- javascript call()函式用法簡單介紹JavaScript函式
- javascript trim()函式用法簡單介紹JavaScript函式
- getFullYear()函式用法簡單介紹函式
- document.close()函式簡單介紹函式
- js isPrototypeOf()函式用法簡單介紹JS函式
- javascript高階函式簡單介紹JavaScript函式
- javascript函式呼叫方式簡單介紹JavaScript函式
- js isNaN函式的用法簡單介紹JSNaN函式
- javascript定時器函式簡單介紹JavaScript定時器函式
- javascript呼叫函式的方式簡單介紹JavaScript函式
- javascript匿名函式的使用簡單介紹JavaScript函式
- js eval()函式的用法簡單介紹JS函式
- js fromCharCode()函式用法簡單介紹JS函式
- js 函式作用域鏈簡單介紹JS函式
- 機器學習之簡單介紹啟用函式機器學習函式
- jQuery Validate簡單介紹jQuery
- jQuery filter() 用法簡單介紹jQueryFilter
- 簡單介紹JS函式防抖和函式節流JS函式
- 正規表示式使用replace()函式簡單介紹函式
- 簡單介紹如何使用Bazel構建Golang程式Golang
- js中匿名函式的使用簡單介紹JS函式
- js函式的length屬性簡單介紹JS函式
- javascript匿名函式的優點簡單介紹JavaScript函式
- jQuery阻止事件冒泡簡單介紹jQuery事件