原型的特殊點

2021-10-23 17:38:38 字數 2949 閱讀 5037

// 建立乙個學生物件

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 他們之間就是通...