建構函式+原型鏈
一般情況下,屬性在物件本身上,方法在原型中prototype(顯示原型)
每個函式都有乙個prototype,為乙個空物件{},稱為原型物件({}無自己 寫的屬性).proto(隱式原型)原型物件中有constructor,__proto__兩個屬性
原型物件中的__proto__存的位址值等於object.prototype存的位址值,位址值指向同乙個物件所以相等
原型物件中的__proto__預設指向object的例項物件object.prototyp(object建構函式除外,因為它的原型物件直接就是object.prototyp)
原理function fun(){} 函式
內部** : fun.prototype = {}
原型物件中的constructor,指向該函式物件
fun.prototype.constructor = fun
每個函式都有乙個__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用來定義檔案系統的結構以及描述系統中每個檔案的管理資訊,每...