成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

淺談JavaScript原型與原型鏈

Yang_River / 872人閱讀

摘要:在講原型之前,先簡單介紹一下幾個概念構造函數(shù)例如上述代碼創(chuàng)建的函數(shù)就被稱為構造函數(shù)。同一個構造函數(shù)實例化得到的多個對象具有相同的原型對象,所以經(jīng)常使用原型對象來實現(xiàn)繼承。實例對象通過操作構造函數(shù)所創(chuàng)建的對象是實例對象。

對于很多前端開發(fā)者而言,JavaScript的原型實在是很讓人頭疼,所以我這邊就整理了一下自己對應原型的一點理解,分享給大家,供交流使用

原型

說起原型,那就不得不說prototype、__proto__、constructor三者的關系,其中比較麻煩的就是容易將prototype和__proto__混淆,這也是因為它們之間的指向確實有些復雜

function Heternally(){};
var f1 = new Heternally;

通過上述兩行代碼先創(chuàng)建一個函數(shù)對象,然后使用new實例化對象。

在講原型之前,先簡單介紹一下幾個概念:

構造函數(shù)

例如上述代碼創(chuàng)建的Heternally()函數(shù)就被稱為構造函數(shù)。是用來初始化新創(chuàng)建的對象的函數(shù)。

構造函數(shù)有一個prototype屬性,它指向實例對象的原型對象。同一個構造函數(shù)實例化得到的多個對象具有相同的原型對象,所以經(jīng)常使用原型對象來實現(xiàn)繼承。

實例對象

通過new操作構造函數(shù)所創(chuàng)建的對象是實例對象。一個構造函數(shù)可以實例化多個實例對象,但是得到的各個實例對象并不相等。

實例對象有個proto屬性,指向該實例對象對應的原型對象。

又因為實例對象可以繼承原型對象的屬性,所以實例對象也擁有constructor屬性,指向原型對象對應的構造函數(shù)

原型對象

原型對象有一個constructor屬性,指向該原型對象對應的構造函數(shù)

w3c上對于 prototype 屬性的定義是它使您有能力向對象添加屬性和方法

prototype和__proto__的區(qū)別

1. prototype是函數(shù)才有的屬性

2. __proto__是每個對象都有的屬性

3. __ptoto__實際上是某個實體對象的屬性,而prototype則是屬于構造函數(shù)的屬性。__ptoto__只能在學習或調試的環(huán)境下使用。

__proto__屬性指向誰

它的指向取決于對象創(chuàng)建時的實現(xiàn)方式,這里就介紹兩種常用方式創(chuàng)建對象后,它指向誰

字面量方式

構造器方式

原型鏈

由于__proto__是任何對象都有的屬性,而js中萬物皆對象,所以會形成一條__proto__連起來的鏈條,遞歸訪問__proto__必須最終到頭,并且值是null。

當js引擎查找對象的屬性時,先查找對象本身是否存在該屬性,如果不存在,會在原型鏈中查找,但不會查找自身的prototype

圖片取自原型鏈

總結

所有的對象都有__proto__屬性,該屬性對應該對象的原型.

所有的函數(shù)對象都有prototype屬性,該屬性的值會被賦值給該函數(shù)創(chuàng)建的對象的_proto_屬性.

所有的原型對象都有constructor屬性,該屬性對應創(chuàng)建所有指向該原型的實例的構造函數(shù).

函數(shù)對象和原型對象通過prototype和constructor屬性進行相互關聯(lián).

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

轉載請注明本文地址:http://systransis.cn/yun/51188.html

相關文章

  • 淺談JavaScript原型原型

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

    Zoom 評論0 收藏0
  • 淺談JavaScript原型

    摘要:在這其中我們就逃不開要討論繼承原型對象構造函數(shù)實例了。想要獲得某一類型的構造函數(shù)可以用來獲得,也可以對該屬性進行賦值操作。三上面就提到一點是指構造函數(shù)的原型對象,它是一個對象,它是構造函數(shù)的屬性。 原型鏈這一個話題,需要和很多概念一起講,才能串成一個比較系統(tǒng)的知識點。在這其中我們就逃不開要討論繼承、原型對象、構造函數(shù)、實例了。 一、構造函數(shù) 構造函數(shù)是一類特殊的函數(shù),它的作用是用來生成...

    xumenger 評論0 收藏0
  • 淺談javascript原型原型

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

    includecmath 評論0 收藏0
  • 淺談 JavaScript 原型

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

    explorer_ddf 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<