最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

jquery學(xué)習(xí)筆記之無(wú)new構(gòu)建詳解

 更新時(shí)間:2017年12月07日 10:26:33   作者:三十億少女的夢(mèng)  
大部分人使用 jQuery 的時(shí)候都是使用第一種無(wú) new 的構(gòu)造方式,直接 $('') 進(jìn)行構(gòu)造,這也是 jQuery 十分便捷的一個(gè)地方。這篇文章主要給大家介紹了關(guān)于jquery學(xué)習(xí)筆記之無(wú)new構(gòu)建的相關(guān)資料,需要的朋友們下面來(lái)一起看看吧。

前言

當(dāng)我們想要?jiǎng)?chuàng)建一個(gè)對(duì)象,我們可能使用new方法去構(gòu)建一個(gè)對(duì)象,那按道理jquery也是一個(gè)對(duì)象,應(yīng)該也是用new jquery()來(lái)構(gòu)建呀為什么我們創(chuàng)建jquery對(duì)象不用new jquery()而是直接使用類似$(ele)的方式去構(gòu)建出來(lái)一個(gè)jquery對(duì)象呢?其實(shí)內(nèi)部還是使用了new來(lái)構(gòu)建的,只是jquery內(nèi)部幫我們構(gòu)建了而已,請(qǐng)看下面代碼

function Jquery(selector, context) {
  return new Jquery(selector, context);
 }

 Jquery.prototype = {
  version:'1.01'
 }

直接這樣內(nèi)部使用new來(lái)構(gòu)建Jquery,很明顯是有問(wèn)題的,這樣的話就形成了死循環(huán)。為了解決死循環(huán)的問(wèn)題,請(qǐng)看下面代碼:

function Jquery(selector, context) {
 return Jquery.prototype.init(selector, context);
}

Jquery.prototype = {
 version:'1.01',
 init: function () {
  this.name = "lin";
  return this;
 }
}

var a = Jquery();
var b = Jquery();
console.log(a.version); //1.01
console.log(a.name); //lin
a.name = "na";
console.log(b.name); //na

死循環(huán)的問(wèn)題確實(shí)解決了,但是又發(fā)現(xiàn)了新的問(wèn)題,可以看到a和b兩個(gè)對(duì)象的屬性是公用的,我修改a.name屬性為na,b.name屬性也跟著變?yōu)榱薾a,其原因就是this都是指向Jquery的

為了解決這個(gè)問(wèn)題,我們可以每次調(diào)用Jquery()的時(shí)候都構(gòu)建一個(gè)新的對(duì)象,改進(jìn)代碼如下:

function Jquery(selector, context) {
 return new Jquery.prototype.init(selector, context); //注意看,這里多了個(gè)new
}

Jquery.prototype = {
 version:'1.01',
 init: function () {
  this.name = "lin";
  console.log(this);
  return this;
 }
}

var a = Jquery();
var b = Jquery();
console.log(a.version); //undefined
console.log(a.name); //lin
a.name = "na";
console.log(b.name); //na

這樣處理之后,屬性共享的問(wèn)題已經(jīng)解決了,每個(gè)對(duì)象都有各自的屬性,可以自由修改,每個(gè)對(duì)象互不影響,但是又又又發(fā)現(xiàn)了新的問(wèn)題,可以看到我們控制臺(tái)打印a.version這個(gè)屬性的時(shí)候是讀取不到這個(gè)屬性的,原因就在于此時(shí)Jquery.prototypeJquery.prototype.init.prototype是互不相干的,我們創(chuàng)建的是Jquery.prototype.init對(duì)象,所以只能讀到Jquery.prototype.init.prototype上的屬性而讀取不到Jquery.prototype上的屬性的(該例指version這個(gè)屬性),解決辦法很簡(jiǎn)單,就是把Jquery.prototype賦值給Jquery.prototype.init.prototype,這樣就相當(dāng)于把Jquery原型上的屬性全部賦值到了Jquery.init的原型上,請(qǐng)看下面代碼:

function Jquery(selector, context) {
 return new Jquery.prototype.init(selector, context);
}

Jquery.prototype = {
 version:'1.01',
 init: function () {
  this.name = "lin";
  return this;
 }
}

Jquery.prototype.init.prototype = Jquery.prototype; //畫龍點(diǎn)睛之筆

var a = Jquery();
var b = Jquery();
console.log(a.version); //1.01
console.log(a.name); //lin
a.name = "na";
console.log(b.name); //na

可以看到,我們控制臺(tái)打印a對(duì)象的version屬性,已經(jīng)可以讀取并且打印出來(lái)了。

至此,已經(jīng)完成了Jquery的無(wú)new構(gòu)建。

ps:jQuery.fn其實(shí)就是jQuery的prototype,jquery源碼可以看到該條語(yǔ)句:jQuery.fn = jQuery.prototype = {};

  $()和jquery()其實(shí)是一樣的,jquery源碼可以看到該條語(yǔ)句: window.jQuery = window.$ = jQuery;

原型 prototype

認(rèn)識(shí)一下什么是原型?

在JavaScript中,原型也是一個(gè)對(duì)象,通過(guò)原型可以實(shí)現(xiàn)對(duì)象的屬性繼承,JavaScript的對(duì)象中都包含了一個(gè)" [[Prototype]]"內(nèi)部屬性,這個(gè)屬性所對(duì)應(yīng)的就是該對(duì)象的原型。

對(duì)于"prototype"和"__proto__"這兩個(gè)屬性有的時(shí)候可能會(huì)弄混,"Person.prototype"和"Person.__proto__"是完全不同的。

在這里對(duì)"prototype"和"__proto__"進(jìn)行簡(jiǎn)單的介紹:

對(duì)于所有的對(duì)象,都有__proto__屬性,這個(gè)屬性對(duì)應(yīng)該對(duì)象的原型

對(duì)于函數(shù)對(duì)象,除了__proto__屬性之外,還有prototype屬性,當(dāng)一個(gè)函數(shù)被用作構(gòu)造函數(shù)來(lái)創(chuàng)建實(shí)例時(shí),該函數(shù)的prototype屬性值將被作為原型賦值給所有對(duì)象實(shí)例(也就是設(shè)置實(shí)例的__proto__屬性)

function Person(name, age){
this.name = name;
this.age = age;
}
Person.prototype.getInfo = function(){
console.log(this.name + " is " + this.age + " years old");
};
//調(diào)用
var will = new Person("Will", 28);
will.getInfo();//"Will is 28 years old"

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • jquery offset函數(shù)應(yīng)用實(shí)例

    jquery offset函數(shù)應(yīng)用實(shí)例

    點(diǎn)擊一個(gè)按鈕,然后在按鈕的下方顯示一個(gè)div,當(dāng)按鈕位于角落時(shí),div的位置設(shè)定就需要調(diào)整,不然,div將顯示不完全.我打算使用offset()方法實(shí)現(xiàn)此功能
    2012-11-11
  • jQuery實(shí)現(xiàn)簡(jiǎn)單五子棋游戲

    jQuery實(shí)現(xiàn)簡(jiǎn)單五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • jquery顯示loading圖片直到網(wǎng)頁(yè)加載完成的方法

    jquery顯示loading圖片直到網(wǎng)頁(yè)加載完成的方法

    這篇文章主要介紹了jquery顯示loading圖片直到網(wǎng)頁(yè)加載完成的方法,涉及jquery頁(yè)面加載與動(dòng)畫效果的使用技巧,需要的朋友可以參考下
    2015-06-06
  • jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫在控件中的具體實(shí)例

    jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫在控件中的具體實(shí)例

    本篇文章主要是對(duì)jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫在控件中的具體實(shí)例進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-02-02
  • 自動(dòng)適應(yīng)iframe右邊的高度

    自動(dòng)適應(yīng)iframe右邊的高度

    在開(kāi)發(fā)項(xiàng)目過(guò)程中,用iframe嵌套,會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,用iframe嵌套的html結(jié)構(gòu)右邊不會(huì)自動(dòng)適應(yīng)高度。如何解決這一問(wèn)題呢,下面就跟小編一起來(lái)看下吧
    2016-12-12
  • jQuery 表單驗(yàn)證擴(kuò)展代碼(一)

    jQuery 表單驗(yàn)證擴(kuò)展代碼(一)

    好長(zhǎng)一段時(shí)間沒(méi)有寫js代碼了,也好長(zhǎng)時(shí)間沒(méi)有寫文章了,下午閑來(lái)無(wú)事寫了一個(gè) 基于jQuery的表單驗(yàn)證插件。首先申明這個(gè)插件問(wèn)題比較多,不過(guò)覺(jué)得這個(gè)東西很有必要。后期持續(xù)跟新中,先把自己寫的插件原型拿出來(lái)曬曬!
    2010-10-10
  • jQuery實(shí)現(xiàn)的簡(jiǎn)單手風(fēng)琴效果示例

    jQuery實(shí)現(xiàn)的簡(jiǎn)單手風(fēng)琴效果示例

    這篇文章主要介紹了jQuery實(shí)現(xiàn)的簡(jiǎn)單手風(fēng)琴效果,結(jié)合實(shí)例形式分析了jQuery基于事件響應(yīng)、頁(yè)面元素屬性動(dòng)態(tài)操作實(shí)現(xiàn)手風(fēng)琴效果的方法,需要的朋友可以參考下
    2018-08-08
  • jQuery div拖拽用法實(shí)例

    jQuery div拖拽用法實(shí)例

    這篇文章主要介紹了jQuery div拖拽用法,以完整實(shí)例形式分析了jQuery結(jié)合UI插件實(shí)現(xiàn)拖拽功能的相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • jquery里的each使用方法詳解

    jquery里的each使用方法詳解

    有個(gè)同事問(wèn)我each使用方法,我把我知道的用法告訴他.他卻說(shuō)不是這樣的.如是在網(wǎng)上小逛了一下,果然用法有很多.下面總結(jié)下大慨的使用方法.
    2010-12-12
  • 基于zTree樹(shù)形菜單的使用實(shí)例

    基于zTree樹(shù)形菜單的使用實(shí)例

    下面小編就為大家分享一篇zTree樹(shù)形菜單的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12

最新評(píng)論

阿坝县| 万全县| 仁寿县| 炎陵县| 桃源县| 凤城市| 观塘区| 岐山县| 修文县| 浑源县| 德惠市| 开鲁县| 山丹县| 五家渠市| 新巴尔虎左旗| 错那县| 章丘市| 浙江省| 澳门| 广灵县| 东城区| 达州市| 罗田县| 田阳县| 缙云县| 荔波县| 儋州市| 平舆县| 绍兴市| 巨鹿县| 崇阳县| 和龙市| 双柏县| 灵宝市| 玉屏| 镇平县| 肇州县| 柘荣县| 涞水县| 平阴县| 金阳县|