首頁  >  文章  >  web前端  >  重點講解在JavaScript中的__proto__屬性(圖文教學)

重點講解在JavaScript中的__proto__屬性(圖文教學)

亚连
亚连原創
2018-05-21 14:55:251603瀏覽

這篇文章主要介紹了JavaScript中的__proto__屬性,對於JavaScript中所謂的對象來講,它指向對象的原型prototype,需要的朋友可以參考下

JavaScript是一個面向對象語音,即一切皆對象。

那麼怎麼產生物件?在Java的世界裡,物件是由類別(Class)實例出來的,通俗地說,就是將事物抽象化成一個模具,用這個模具(類別)生產出一個個具體的實體(物件)。

可是JS中沒有類別這個概念,有的是“原型”,物件是由原型衍生出來的。通俗地說,在JS的世界裡,「原型」並不是模具,而是具體的實體(物件)。所有物件都是由另一個物件衍生出來的,而這個被衍生的物件就是所謂的「原型物件」。

在javascript中有三類對象,1用戶創建的對象,2構造函數的對象,3原型對象

  • 用戶創建的對象,一般意義上使用new語句明確構造的方法。

  • 建構函數的對象,普通的建構函數,即透過new呼叫產生普通物件的函數

  • ##原型對象,建構函數prototype屬性指向的對象。

這三個物件中每一個類別都有一個屬性-__proto__屬性,它們指向該物件的原型,從任何物件沿用它開始遍歷都可以追溯到Object.prototype 。

建構函式都有prototype對象,它指向一個原型對象,透過該建構函式建立物件的時候,被建立的物件的__proto__屬性會指向建構函式的prototype屬性。

原型物件有一個constructor屬性,該屬性指向它對應的建構子。

Talk is cheap, show me the code! 咱們來看看程式碼:

var obj = {};
console.log(obj);

2016510171046523.png (154×46)

咱們將__proto__展開看看:是一些預設方法。


2016510171106039.png (331×351)

你一​​定會發生這個__proto__物件中也有一個__proto__對象,正如我們剛才所說的,每個物件都有一個__proto__屬性指向它的原型物件。我們列印一下這個__proto__中的__proto__:

console.log(obj.__proto__.__proto__); //--> null

結果是null,表示已經到了頂層原型物件。 obj是用大括號{}定義的,obj的原型物件自然是JS的頂層物件。

咱們再看一端程式碼,加強下理解:

var parent = {
  name : "parent"
};
var child = {
  name : "child",
  __proto__ : parent
};
var subChild = {
  name : "subChild",
  __proto__ : child
}
console.log(subChild);

2016510171136445.png (176×141)

    ## subChild.__proto__ --> child
  • ##child.__proto__ --> parent
  • ##parent.__proto__ --> 頂層原型對象


上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在JavaScript中對原型prototype全面分析

設計模式中的組合模式在JavaScript程序建構中的使用(進階篇)

#在javascript中建立物件的各種模式解析(圖文教學)


#

以上是重點講解在JavaScript中的__proto__屬性(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn