摘要:每個第一次使用的開發(fā)者都感到驚嘆的太神奇了究竟是怎么做到的使用控制贊嘆前人之余探究其本源才是前端開發(fā)者應(yīng)該做的事社區(qū)常常說不要重復造輪子可是啊連輪子都造不出來又怎么去了解在什么環(huán)境下用什么輪子怎么樣才可以造成更加優(yōu)秀的輪子不同階段對前端有不
每個第一次使用jq的開發(fā)者都感到驚嘆,jq的$太神奇了,究竟是怎么做到的使用$控制dom
贊嘆前人之余,探究其本源才是前端開發(fā)者應(yīng)該做的事,社區(qū)常常說,不要重復造輪子,
可是啊,連輪子都造不出來,又怎么去了解在什么環(huán)境下用什么輪子,怎么樣才可以造成更加優(yōu)秀的輪子,
不同階段對前端有不同的理解,作為一名程序員,本就是沒有盡頭,靜下心來,和別人比一比,多借鑒前人的發(fā)展,取其精
華去其糟粕,不要閉門造車,做一名不斷學習的前端開發(fā)者
? 回頭看來jq已經(jīng)逐漸在不斷的學習中揭開了他神秘的面紗,讓我想看看美麗的$是怎么出生的
(function (window){
var jQuery = function (selects) {
}
window.$ = jQuery;
}
)(window)
可愛的$就指向JQuery的實例了當我們$("#id")就相當于 jQuery("#id")
那么現(xiàn)在就要處理獲取到的dom元素
(function (window) {
function jQuery(selects) {
return new jQuery.fn.init(selects)
}
jQuery.fn = {} //創(chuàng)建掛載函數(shù)
jQuery.fn.init = function (selects) {
var dom = [].slice.call(document.querySelectorAll(selects))
var i = 0;
var len = dom ? dom.length : 0
for (i = 0; i < len; i++) {
this[i] = dom[i]
}
this.length = len
this.selects = selects || " ";
}
window.$ = jQuery; //注意這里jQuery指向window
})(window)
現(xiàn)在我們就已經(jīng)將$()里面的dom捕捉到了,請轉(zhuǎn)化成為數(shù)組,利于后面的操作
下一步就是在原型鏈上面創(chuàng)建jquery的方法了
(function (window){
var jQuery = function (selector){
return new jQuery.fn.init(selector) //這里必須構(gòu)造函數(shù)要不放怎么去獲取節(jié)點信息
}
jQuery.fn = {
val(){
return this[0].innerHTML
}
//.......等等方法
}
var int = jQuery.fn.init = function (selector) {
var dom = [].slice.call(document.querySelectorAll(selector))
var i,len = dom?dom.length:0
for (i = 0; i < len; i++) {
this[i] = dom[i]
}
console.log(len,selector);
this.length = len;
this.selector = selector || " "
}
int.prototype = jQuery.fn
window.$ = jQuery;
})(window)
我們實現(xiàn)了類似jq的val()方法了
試驗一下
title
jquery test 1
最關(guān)鍵的一點使用jQuery.fn
的方式利于拓展,上面代碼體現(xiàn)了這一點,假如我們現(xiàn)在jq上面創(chuàng)建自己的方法,就把方法掛在jQuery.fn上面相當于在原型上面加方法
這里可以看到j(luò)query一切都是基于原型,所以呀,講原型,我用jquery來說明,感受到原型的強大
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/1917.html
摘要:可以看出這個構(gòu)造函數(shù)是由創(chuàng)建出來的,而我們看下的隱式原型,竟然是指向了的原型,也就是也是由創(chuàng)建出來的。例如,其他構(gòu)造函數(shù)的原型將覆蓋屬性并提供自己的方法。將構(gòu)造函數(shù)的執(zhí)行對象賦給這個空對象并且執(zhí)行。把對象的隱式原型指向構(gòu)造函數(shù)的原型。 構(gòu)造函數(shù)與實例對象 又是這個經(jīng)典的問題,嗯,我先來寫個構(gòu)造函數(shù),然后實例化一個對象看看。 function Person(name) { this....
摘要:不理解沒關(guān)系,下面會結(jié)合圖例分析上一篇高級程序設(shè)計筆記創(chuàng)建對象下一篇高級程序設(shè)計筆記繼承參考之原型鏈的解讀三張圖搞懂的原型對象與原型鏈繼承與原型鏈 文章直接從原型圖解開始的,如果對一些概念不太清除,可以結(jié)合后面幾節(jié)查看 1. 圖解原型鏈 1.1 鐵三角關(guān)系(重點) function Person() {}; var p = new Person(); showImg(https://s...
摘要:對應(yīng)的關(guān)系圖如下講解了構(gòu)造函數(shù)和原型對象之間的關(guān)系,那么實例對象和原型對象之間的關(guān)系又是怎么樣的呢下面講解。原型對象的指向的是構(gòu)造函數(shù)和本身沒有屬性,但是其原型對象有該屬性,因此也能獲取到構(gòu)造函數(shù)。 JavaScript進階 - 1. 原型和原型鏈的概念 我們好多經(jīng)常會被問道JavaScript原型和原型鏈的概念,還有關(guān)于繼承,new操作符相關(guān)的概念。本文就專門整理了原型和原型鏈的概念...
摘要:原型原型是什么在中函數(shù)是一個包含屬性和方法的類型的對象而原型就是類型對象的一個屬性在函數(shù)定義時就包含了屬性它的初始值是一個空對象在中并沒有定義函數(shù)的原型類型所以原型可以是任何類型原型是用于保存對象的共享屬性和方法的原型的屬性和方法并不會影響 原型 原型是什么 在JavaScript中 函數(shù)是一個包含屬性和方法的Function類型的對象 而原型(Prototype)就是Function...
摘要:前言作為前端高頻面試題之一,相信很多小伙伴都有遇到過這個問題。 前言 作為前端高頻面試題之一,相信很多小伙伴都有遇到過這個問題。那么你是否清楚完整的了解它呢? 國際慣例,讓我們先拋出問題: 什么是原型、原型鏈 它們有什么特點 它們能做什么 怎么確定它們的關(guān)系 或許你已經(jīng)有答案,或許你開始有點疑惑,無論是 get 新技能或是簡單的溫習一次,讓我們一起去探究一番吧 如果文章中有出現(xiàn)紕...
摘要:高程讀書筆記第六章理解對象創(chuàng)建自定義對象的方式有創(chuàng)建一個實例,然后為它添加屬性和方法。創(chuàng)建了自定義的構(gòu)造函數(shù)之后,其原型對象默認只會取得屬性至于其他方法都是從繼承而來的。 JS高程讀書筆記--第六章 理解對象 創(chuàng)建自定義對象的方式有創(chuàng)建一個Object實例,然后為它添加屬性和方法。還可用創(chuàng)建對象字面量的方式 屬性類型 ECMAScript在定義只有內(nèi)部采用的特性時,描述了屬性的各種特征...
閱讀 1118·2021-11-25 09:43
閱讀 1640·2021-09-13 10:25
閱讀 2592·2021-09-09 11:38
閱讀 3400·2021-09-07 10:14
閱讀 1714·2019-08-30 15:52
閱讀 641·2019-08-30 15:44
閱讀 3572·2019-08-29 13:23
閱讀 1974·2019-08-26 13:33