首先深入理解__proto__
__proto__
的含義是例項物件指向例項原型!!
例項的原型物件就是建構函式.prototype
例如
function person()
var person = new person();
console.log(person.__proto__ === person.prototype); // true
所以:
重點理解:例項物件.__proto__指向例項原型物件
參考原部落格__proto__的那個部分
挖來下圖
理解之後我們來看function
1在宣告函式的時候
有一種宣告方法是function 建構函式
下面參考阮一峰
第三種宣告函式的方式是function
建構函式。
var add = new function(
'x',
'y',
'return x + y'
);// 等同於
function add(x, y)
也就是說function
是乙個建構函式,用來生成函式的建構函式.那麼,string()
,boolean()
,number()
這些函式都是function
構造出來的,new
出來的,也就是說string()
,boolean()
,number()
這些函式(函式也是廣義物件)是function
的例項物件.那麼例項物件.__proto__指向例項原型物件
也就是說
string.__proto__===function.prototype//true
number.__proto__===function.prototype//true
boolean.__proto__===function.prototype//true
object.__proto__ === function.prototype//true
不只是上述建構函式,實際上,
任意函式的__proto__都===function.prototype
即
所有函式.__proto__===function.prototype
因為任意函式都是function()
new
(構造)出來的.
任意函式都是function()
建構函式的例項
關於function
最奇特的是
function.__proto__===function.prototype//true
因為所有函式例項.__proto__就是function建構函式的原型(function.prototype)
,函式而函式例項也包括他自己.
深入理解:
function
作為乙個函式物件例項,他有__proto__
,指向原型
function
又作為乙個構造函式,他有自己的protoype
,指向原型
所以
function.__proto__===object.protoype//false
也就是說
更深層次的理解:
2function
也可以看作是string()
或者boolean()
或number()
同等地位
因為所有函式.prototype
雖然是例項原型,但是例項原型本質還是乙個物件,也就是說所有的例項原型物件是object()
建構函式的例項,即
string.prototype.__proto__=== object.prototype//true
number.prototype.__proto__=== object.prototype//true
boolean.prototype.__proto__=== object.prototype//true
//同理
function.prototype.__proto__=== object.prototype//true
function
總結:
例項物件.__proto__===建構函式.prototype
其中例項物件是建構函式構造的例項.
原型鏈:
每層的__proto__
都指向上一層的原型,所以一層一層的__proto__
組成的鏈就成為原型鏈.
最終
object.prototype.__proto__
//null
原型鏈中Function與Object的關係
原型鏈中function與object的關係 最近在找工作,面試的時候有遇到原型相關的一些問題,個人又有點暈,回答的 不是很好,現在總結一下 object.proto function.prototype function.proto function.prototype array.proto f...
原型 原型鏈
var animal function var dog function animal.price 2000 dog.prototype animal var tidy new dog console.log dog.price 為什麼輸出 undefined console.log tidy.pr...
原型,原型鏈
原型object.hasownproperty proname object 乙個物件的例項 propname 乙個屬性名稱的字串值 返回乙個布林值原型鏈中的this 原型物件 原型物件的作用 一般情況下,會把方法宣告在原型物件裡。目的是實現繼承。當物件訪問自身屬性或方法時,先從自身找有沒有,如果有...