国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

淺談JavaScript原型鏈

xumenger / 2832人閱讀

摘要:在這其中我們就逃不開(kāi)要討論繼承原型對(duì)象構(gòu)造函數(shù)實(shí)例了。想要獲得某一類型的構(gòu)造函數(shù)可以用來(lái)獲得,也可以對(duì)該屬性進(jìn)行賦值操作。三上面就提到一點(diǎn)是指構(gòu)造函數(shù)的原型對(duì)象,它是一個(gè)對(duì)象,它是構(gòu)造函數(shù)的屬性。

原型鏈這一個(gè)話題,需要和很多概念一起講,才能串成一個(gè)比較系統(tǒng)的知識(shí)點(diǎn)。在這其中我們就逃不開(kāi)要討論繼承、原型對(duì)象、構(gòu)造函數(shù)、實(shí)例了。

一、構(gòu)造函數(shù)

構(gòu)造函數(shù)是一類特殊的函數(shù),它的作用是用來(lái)生成實(shí)例對(duì)象。想要獲得某一類型的構(gòu)造函數(shù)可以用 class.prototype.constructor來(lái)獲得,也可以對(duì)該屬性進(jìn)行賦值操作。
利用構(gòu)造函數(shù)創(chuàng)建實(shí)例要用到new關(guān)鍵字,這個(gè)過(guò)程會(huì)有以下幾步:
a.創(chuàng)建一個(gè)對(duì)象
b.將構(gòu)造函數(shù)中的this指向該對(duì)象的引用
c.執(zhí)行構(gòu)造函數(shù)中的代碼
d.返回該對(duì)象

二、原型對(duì)象(prototype)

在原型鏈中,原型對(duì)象是一個(gè)很關(guān)鍵的點(diǎn)。定義一個(gè)函數(shù)對(duì)象的時(shí)候,會(huì)包含一個(gè)預(yù)定義的原型對(duì)象,即Object的實(shí)例,所以原型對(duì)象是針對(duì)函數(shù)對(duì)象來(lái)講的。

三、prototype vs _proto_

上面就提到一點(diǎn)prototype是指構(gòu)造函數(shù)的原型對(duì)象,它是一個(gè)對(duì)象,它是構(gòu)造函數(shù)的屬性
而_proto_是一個(gè)實(shí)例對(duì)象的內(nèi)部屬性,用來(lái)指向創(chuàng)建該實(shí)例的函數(shù)對(duì)象的原型對(duì)象。
我們將在第五小節(jié)用代碼更加直觀得明白二者的關(guān)系

四、繼承

在JavaScript中,我們可以用改變構(gòu)造函數(shù)的原型對(duì)象來(lái)實(shí)現(xiàn)繼承。

五、原型鏈

什么時(shí)候會(huì)出現(xiàn)原型鏈:當(dāng)一個(gè)構(gòu)造函數(shù)的原型對(duì)象(prototype)指向另一個(gè)引用類型的實(shí)例,該實(shí)例的構(gòu)造函數(shù)的原型對(duì)象又包含一個(gè)指向另一個(gè)原型的指針。層層遞進(jìn),就構(gòu)成了實(shí)例與原型的鏈條。這也就是形成原型鏈的基本思路。
說(shuō)個(gè)通俗的例子:

//父親類構(gòu)造函數(shù)
  function Father(){
    this.FProp = "father";
  }
  Father.prototype.FCall = function(){
    console.log(JSON.stringify(this)+" is calling father"s function");
  }

  //兒子類構(gòu)造函數(shù)
  function Son(){
    this.SProp = "son";
  }

  Son.prototype.SCall = function(){
    console.log("I"m a son");
  }

  //通過(guò)原型繼承
  //注意上面的SCall()會(huì)失效,因?yàn)橛昧死^承,prototype中的方法和constructor被重寫(xiě)
  Son.prototype = new Father();
  Son.prototype.constructor =  Son;
  //生成實(shí)例對(duì)象
  var newInstance = function(){
    var tom = new Son();
    tom.FCall();
    console.log(tom.FProp);
    //tom.SCall(); 控制臺(tái)會(huì)報(bào)undefined錯(cuò)誤
    console.log(tom.SProp);

    console.log(Son.prototype.constructor);
  }  

代碼結(jié)果:
可以看出子類繼承了父類之后,可以獲取父類的屬性和方法。

  var getDifference = function(){
    var tom = new Son();
    console.log(Son.prototype); 
    console.log(tom.__proto__);
    console.log(tom.prototype);   
  }

代碼結(jié)果:
對(duì)象實(shí)例獲取prototype的結(jié)果是undefined

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/100717.html

相關(guān)文章

  • 淺談JavaScript原型原型

    摘要:在講原型之前,先簡(jiǎn)單介紹一下幾個(gè)概念構(gòu)造函數(shù)例如上述代碼創(chuàng)建的函數(shù)就被稱為構(gòu)造函數(shù)。同一個(gè)構(gòu)造函數(shù)實(shí)例化得到的多個(gè)對(duì)象具有相同的原型對(duì)象,所以經(jīng)常使用原型對(duì)象來(lái)實(shí)現(xiàn)繼承。實(shí)例對(duì)象通過(guò)操作構(gòu)造函數(shù)所創(chuàng)建的對(duì)象是實(shí)例對(duì)象。 對(duì)于很多前端開(kāi)發(fā)者而言,JavaScript的原型實(shí)在是很讓人頭疼,所以我這邊就整理了一下自己對(duì)應(yīng)原型的一點(diǎn)理解,分享給大家,供交流使用 原型 說(shuō)起原型,那就不得不說(shuō)p...

    Zoom 評(píng)論0 收藏0
  • 淺談JavaScript原型原型

    摘要:在講原型之前,先簡(jiǎn)單介紹一下幾個(gè)概念構(gòu)造函數(shù)例如上述代碼創(chuàng)建的函數(shù)就被稱為構(gòu)造函數(shù)。同一個(gè)構(gòu)造函數(shù)實(shí)例化得到的多個(gè)對(duì)象具有相同的原型對(duì)象,所以經(jīng)常使用原型對(duì)象來(lái)實(shí)現(xiàn)繼承。實(shí)例對(duì)象通過(guò)操作構(gòu)造函數(shù)所創(chuàng)建的對(duì)象是實(shí)例對(duì)象。 對(duì)于很多前端開(kāi)發(fā)者而言,JavaScript的原型實(shí)在是很讓人頭疼,所以我這邊就整理了一下自己對(duì)應(yīng)原型的一點(diǎn)理解,分享給大家,供交流使用 原型 說(shuō)起原型,那就不得不說(shuō)p...

    Yang_River 評(píng)論0 收藏0
  • 淺談 JavaScript 原型

    摘要:數(shù)組的構(gòu)造函數(shù)是原型鏈的指向與其他除以外的構(gòu)造函數(shù)相同,的也指向頂級(jí)原型對(duì)象,每一個(gè)數(shù)組都是的實(shí)例,都指向。實(shí)例對(duì)象查找構(gòu)造函數(shù)原型對(duì)象的方法一般會(huì)把對(duì)象共有的屬性和方法都放在構(gòu)造函數(shù)的原型對(duì)象上。 showImg(https://segmentfault.com/img/remote/1460000018998704?w=900&h=506); 閱讀原文 概述 在 JavaScr...

    explorer_ddf 評(píng)論0 收藏0
  • 淺談javascript原型原型

    摘要:在中,主要有兩種創(chuàng)建對(duì)象的方法分別是對(duì)象字面量以及調(diào)用構(gòu)造函數(shù)對(duì)象字面量調(diào)用構(gòu)造函數(shù)其實(shí)上述兩種創(chuàng)建對(duì)象的方法,本質(zhì)上是一樣的,都是引擎調(diào)用對(duì)象的構(gòu)造函數(shù)來(lái)新建出一個(gè)對(duì)象。 原型與原型鏈?zhǔn)莏avascript里面最最核心的內(nèi)容,如果不能理解它們之間的存在關(guān)系的話,那么我們是不能理解這門語(yǔ)言的。 在JS中,主要有兩種創(chuàng)建對(duì)象的方法, 分別是對(duì)象字面量以及調(diào)用構(gòu)造函數(shù) //對(duì)象字面量 va...

    includecmath 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<