每個函式function都有乙個prototype,即顯示原型(屬性)
每個例項物件都有乙個 proto_,可稱為隱式原型(屬性)
物件(例項)的隱式原型的值為其對應建構函式的顯示原型的值,即他們都指向同乙個物件
記憶體結構(如圖)
//定義建構函式
function fun();
//向建構函式中新增乙個方法,這裡沒用處
this.asb=function()
}//1. 每個函式function都有乙個prototype,即顯式原型(屬性)
console.log(fun.prototype);
//2. 每個例項物件都有乙個__proto__,可稱為隱式原型(屬性)
//例項化建構函式的物件
var fun=new fun();//內部語句:this.__proto__=fun.prototype;這裡this代表fun這個例項
console.log(fun.__proto__);
//3. 物件的隱式原型的值為其對應建構函式的顯式原型的值
console.log(fun.__proto__===fun.prototype);
//給原型新增方法
fun.prototype.test=function()
//通過建構函式的例項物件呼叫
fun.test();
總結:
*①函式的prototype屬性:在定義函式時自動新增的,預設值是乙個空object物件。
*②物件(例項)的 _proto__屬性:建立物件時自動新增的,預設值為建構函式的prototype屬性值。
*③程式設計師能直接操作顯示原型,但不能直接操作隱式原型(es6之前)
往建構函式的原型物件裡新增方法時,為什麼該建構函式的所有例項都能使用?就是因為它要調原型中的方法是,先在自己這個物件(例項本身)裡找,(因為例項化乙個物件就會在堆空間裡開闢乙個物件的空間,和在物件裡的屬性是乙個函式乙個道理,物件裡的屬性是乙個函式時,會在堆中又開闢乙個空間,在堆中該屬性存的就是該空間的引用),找不到就同過該例項的隱式屬性 _proto__去建構函式的原型物件裡找。
js 高階 原型與原型鏈
所有函式都有乙個特別的屬性 prototype 顯式原型屬性 所有例項物件都有乙個特別的屬性 proto 隱式原型屬性 1.每個函式都有乙個prototype屬性,它預設指向乙個物件 objectg 即稱為 原型物件 顯式原型與隱式原型的關係 函式的prototype 定義函式時被自動賦值,值預設為...
js從隱式 顯式原型到原型鏈的簡介
概念 每個物件都擁有的屬性 物件隱式原型的值為其對應建構函式顯式原型的 例子 例子 function fn fn的顯式原型指向乙個空物件 var fn new fn 內部語句 fn.proto this.prototype 物件隱式原型的值為其對應建構函式顯式原型的值 fn.prototype.te...
JS高階 原型和原型鏈
原型鏈是一種關係,例項物件和原型物件之間的關係,關係是通過例項物件中瀏覽器使用的原型 proto 來聯絡的 自定義建構函式,通過例項化,建立例項物件 例項物件中 proto 是原型,瀏覽器使用的 建構函式中的prototype是原型,程式設計師使用的 使用物件 使用物件中的屬性和物件中的方法,使用物...