欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單解析JavaScript中的__proto__屬性

 更新時間:2016年05月10日 17:13:25   作者:Asrocky  
這篇文章主要介紹了JavaScript中的__proto__屬性,對于JavaScript中所謂的對象來講,它指向?qū)ο蟮脑蚿rototype,需要的朋友可以參考下

JavaScript是一個面向?qū)ο笳Z音,即一切皆對象。

那么怎么生成對象?在Java的世界里,對象是由類(Class)實例出來的,通俗地說,就是將事物抽象成一個模具,用這個模具(類)生產(chǎn)出一個個具體的實物(對象)。

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

在javascript中有三類對象,1用戶創(chuàng)建的對象,2構(gòu)造函數(shù)的對象,3原型對象

  • 用戶創(chuàng)建的對象,一般意義上使用new語句顯式構(gòu)造的方法。
  • 構(gòu)造函數(shù)的對象,普通的構(gòu)造函數(shù),即通過new調(diào)用生成普通對象的函數(shù)
  • 原型對象,構(gòu)造函數(shù)prototype屬性指向的對象。

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

構(gòu)造函數(shù)都有prototype對象,它指向一個原型對象,通過該構(gòu)造函數(shù)創(chuàng)建對象的時候,被創(chuàng)建的對象的__proto__屬性將指向構(gòu)造函數(shù)的prototype屬性。

原型對象有一個constructor屬性,該屬性指向它對應(yīng)的構(gòu)造函數(shù)。

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

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

2016510171046523.png (154×46)

咱們將__proto__展開看看:是一些默認(rèn)方法。

2016510171106039.png (331×351)

你一定會發(fā)生這個__proto__對象中也有一個__proto__對象,正如我們剛才說的,每個對象都有一個__proto__屬性指向它的原型對象。我們打印一下這個__proto__中的__proto__:

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

結(jié)果是null,說明已經(jīng)到了頂層原型對象。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__ --> 頂層原型對象

相關(guān)文章

最新評論