面試知識點總結 js 原型

2021-10-24 12:33:43 字數 2678 閱讀 4524

建構函式+原型鏈

一般情況下,屬性在物件本身上,方法在原型中

prototype(顯示原型)

每個函式都有乙個prototype,為乙個空物件{},稱為原型物件({}無自己 寫的屬性).

原型物件中有constructor,__proto__兩個屬性

原型物件中的__proto__存的位址值等於object.prototype存的位址值,位址值指向同乙個物件所以相等

原型物件中的__proto__預設指向object的例項物件object.prototyp(object建構函式除外,因為它的原型物件直接就是object.prototyp)

原理function fun(){} 函式

內部** : fun.prototype = {}

原型物件中的constructor,指向該函式物件

fun.prototype.constructor = fun

proto(隱式原型)

每個函式都有乙個__proto__,都是function.prototype

每個例項物件都有乙個__proto__

原理var fun = new fun()

fun.proto= fun.prototype

內部** : fun.proto= fun.prototype

規則

例項物件隱式原型等於建構函式顯示原型

fun.proto=== fun.prototype

//fun是例項物件,不是函式,沒有 prototype

fun.proto=== function.prototype

function.proto=== function.prototype

object.proto=== function.prototype

給原型物件新增屬性,函式的所有例項物件自動擁有原型物件中的屬 性

fun.prototype.fn1 = function(){}

在自己的屬性上找,沒有就沿著__proto__找,如果沒找到返回 undefined

object.prototype.proto= null 原型鏈終點

原型鏈是用來查詢物件屬性的

作用域是針對變數

原型鏈是針對建構函式

隱式原型鏈

fun.prototype的最終值是{}

object.prototype是原型鏈頂級

instanceof : 判斷第乙個引數的原型鏈上是否有第二個引數的構造函 數

看fun和fun.prototype的值是怎麼來的,fun是通過建構函式fun來的, 所以fun.__proto__指向fun.prototype,fun.prototype的值是{},是通過 object建構函式來的,所以fun.__proto__指向object.prototype

例子// fun fun.prototype/{} object.prototype

// fun function.prototype/{} object.prototype

// object function.prototype/{} object.prototype

// {} object.prototype/{}

// 123 number.prototype/{} object.prototype

// number function.prototype/{} object.prototype

原型鏈繼承

改變prototype

sub.prototype = new supper()

改變contructor

測試題

JS原型相關知識點

先引入問題 1 如何準確判斷乙個變數是陣列型別,用typeof,或者instanceof var a 1,2,3 a instanceof array true typeof a object,typeof是無法判斷是否為陣列的,只能區分object和function2 寫乙個原型鏈繼承的例子 例子...

面試知識點總結 js 模組化

let fn1 export import from detail.js 內容是物件,分隔符是逗號 export default import index from index.js 暴露exports 物件,預設是 exports.value 給exports物件新增屬性和方法 module.ex...

Linux面試總結知識點

1.一台主機要實現通過區域網與另乙個區域網通訊,需要做的工作是?定義一條本機指向目標網路閘道器的路由 2.下列關於檔案系統中元資料 比如ext2中的inode 的基本作用及ext2和ext3的根本區別描述錯誤的有?b a.ext2 inode用來定義檔案系統的結構以及描述系統中每個檔案的管理資訊,每...