js的__proto__與propertype的關系


經典的再也不能經典的一篇博客:http://www.cnblogs.com/snandy/archive/2012/09/01/2664134.html

js中最propertype的一些方法的理解http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

原型作用鏈終點:

我們先明白js函數這個名字既有函數屬性可以()執行,也可以是對象屬性可以.進行調用屬性。

Array,Boolean,RegExp這些都是函數。所有他們是普通對象所有他們有__proto__屬性,__proto__屬性都是Function.prototype

所以他們可以后邊加()然后執行。

那么Function.prototype是什么呢:

那么Function.__proto__是什么呢

 

還有一個問題,就是他們作為函數對象的,prototype屬性繼承自哪里呢。首先是一個Object對象,

那么Number.prototype.__proto__是誰呢。

console.log(Function.prototype.__proto__ === Object.prototype) // true

這里我們到達了Object這里。

Object.prototype 也是一個對象

其實上邊這個和Object.__proto__==Function.prototype是一樣的。

這里我們可以看到我們打出來的Object指的是方法的Object並不是對象的Object.

這里就又是一個終點了。

所有js的作用於有三個終點:

Object.prototype.__proto__ 打印出來是null

Function.prototype 打印出來是function (){}

Function.__proto__ 打印出來也是function (){}

 

 

 

 

 

 

 

 

 

 

 

 

 

以下的都可以當成無用的:等待以后刪除:

var  sss = new Object();

 

對於sss是一個對象,任何對象的.__proto__屬性表示的是他構造器的.prototype的值(這里邊掛的方法也就是他繼承的方法或內置方法),而此處Object.prototype的值,typeof 除了function以外的任何Object.prototype都是小寫的object,所以此處是一個Object.prototype的值是一個Object類型的對象。有包含的,valueOf方法和toString方法,isPrototypeOf,hasOwnProperty,當然還有constructor表示的是這個object對象的構造器,Object類,這個類的__proto__是Function.prototype.也就是空的function(){}. 我們查找內置方法的辦法就是,輸入大寫Object.prototype.

 

這些東西總是忘:

這里我們可以知道,普通的對 d 像的的__proto__屬性是個空的 的{}這是個.

我們調用繼承的方法。 這里我們需要知道,普通的對象的__proto__含有的是他的內置的方法。

var box={name:"yan",arr:[1,3,5],obj:{objName:"objyan",age:20}}創建的對象和 var box1=new Object();是一樣的。他們的__proto__都是Object {}空的object對象。並沒有object對應的屬性和內置方法。(沒有__proto__) 但是其他的方法創建的對象就不同了。

var yan=function(){this.name="yan"} var ss=new yan() ss.__proto__就表示一個yan的空對象,里邊有constructor和__proto__這兩個屬性,然后我們點開__proto__然后就是一個空的object對象。不過這是原型鏈的繼承方式。 不同的繼承方式的__proto__是不同的。

================================================

不同的繼承方式的建立的對象的__proto__是不同的

類的prototype 不論是parent.prototype顯示的是parent{},String.prototype的是String{}但是typeof他們都是objec他們對象的__proto__都是object 不同的繼承方式對象的__proto__是不同的。 所以這里我們需要想什么才是繼承,怎么證明他是繼承的,還是我們只需要管他繼承了父類的方法和屬性就行,不管怎么實現的。 一切方法都繼承自function。我們怎么證明方法繼承自function,然后我們就怎么確定son和parent的關系。所以我們obj.__proto__是自身的son{}對象就不合理,而且你看這個son中的contructor在看prototype也就亂了。

 http://www.108js.com/article/article1/10201.html?id=1092


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM