// 建立乙個學生物件
function
student
(name, age)
console.
log(student)
;//方法體
console.
log(student.__proto__)
;//ƒ ()
console.
log(function.prototype)
;//ƒ () prototype原型,本質是乙個物件
//student()函式是通過new function出來的,所以student()方法是function的例項物件
console.
log(student.__proto__ === function.prototype)
;//true
//function的原型,是new function出來的物件的隱式原型__proto__
console.
log(student.__proto__.constructor)
;//ƒ function()
//student()函式的隱式原型的constructor屬性,指向function函式本身
console.
log(function)
;//ƒ function()
console.
log(student.__proto__.constructor === function)
;//true
console.
log(student.__proto__.__proto__)
;//結果是object.prototype object的原型
console.
log(object.prototype)
;console.
log(student.__proto__.__proto__ === object.prototype)
;// 同理
console.
log(function.prototype.__proto__ === object.prototype)
;// student.__proto__===function.prototype 所以解釋為function的原型(物件)的隱式原型
console.
log(function.__proto__ === function.prototype)
;//function的隱式原型===function的原型 **
console.
log(student.__proto__.__proto__.__proto__)
;//null
console.
log(object.__proto__ === function.__proto__)
;//true
console.
log(object.__proto__ === function.prototype)
;console.
log(object.__proto__ === function.__proto__)
;console.
log(function.__proto__ == function.prototype)
;console.
log(object.prototype)
;//物件構造方法的原型
console.
log(object.prototype.__proto__)
;//null
console.
log(function.prototype.__proto__)
;//object的原型
console.
log(function.__proto__.__proto__)
;//object的原型
本篇主要來介紹原型鏈:**中我們首先建立了乙個函式,這裡是乙個建構函式,我們console.log()方法列印函式,在控制台中顯示的是乙個方法的結構內容。
函式才會有原型,物件才會有隱式原型。
由於函式本身是function構造方法建立出來的,所以函式也是物件,student的__proto__屬性即隱式原型,指向的就是function的原型。他們指向的是同乙個位址,所以===判斷的時候為true。
函式的原型prototype,本是是乙個物件,其中有乙個屬性constructor,這個屬性指向的是函式本身。
student.proto.proto,這句話的意思是,student函式的隱式原型的隱式原型,student函式的隱式原型是function的原型,原型是乙個物件,物件是通過obejct方法構造出來的,這個物件的隱式原型就為object的原型。
function.__protot__是乙個比較特殊的乙個點,function.protot===function.__prototype,就是函式建構函式的原型『全等於』函式建構函式物件的隱式原型。這句話我們需要這樣理解,function既是函式,也是物件,當function作為函式的時候,function函式有自己原型,當function作為物件的時候,function物件有隱式原型。『function物件』是function函式new出來的』,function物件的隱式原型指向function函式的原型。
object.proto=== function.prototype另乙個比較特殊點,object是乙個函式,函式的__proto__指向function的原型。
console.log(function.proto.proto); //object的原型 這一句中function.__proto__中function作為物件,結果為function函式的原型,函式的原型本身是乙個物件,所以它的__proto__是object的原型。
原型 原型鏈 new this 知識點彙總
一 new 乙個建構函式經歷的幾個過程 1 建立乙個新物件 2 將建構函式作用域賦予新物件那 3 執行建構函式 4 返回新物件 在全域性範圍內,this指向全域性物件 瀏覽器下指window 物件函式呼叫時,this指向當前物件 全域性函式呼叫時,this指向全域性函式 使用new例項化物件時,th...
js函式的幾個特殊點
在ecmascript中,function 函式 型別實際上是物件。每個函式都是 function 型別的例項,而且都與其他引用型別一樣具有屬性和方法。由於函式是物件,因此函式名實際上也是乙個指向函式物件的指標。1 函式的返回值和函式作為引數傳遞 函式傳遞給函式 function box sum,n...
的函式原型 建構函式原型物件的一點小理解
記錄一點自己學習的過程,有輸入就有輸出。今天看高階程式第六章物件導向,關於建構函式寫一點文章供自己以後複習用。每個建構函式上都有原型物件,即prototype,同時每個原型物件上也有個constructor用來指向誰建立了這個物件,即哪個建構函式建立的,另外每個物件上都有 proto 他們之間就是通...