js從隱式 顯式原型到原型鏈的簡介

2021-09-28 22:17:19 字數 1132 閱讀 5314

概念

每個物件都擁有的屬性

物件隱式原型的值為其對應建構函式顯式原型的

例子:

例子**:

function fn()

//fn的顯式原型指向乙個空物件

}var fn=new fn();

//內部語句

//fn.__proto__=this.prototype

//物件隱式原型的值為其對應建構函式顯式原型的值

fn.prototype.test=function()

fn.test();

console.log(fn.prototype,'\n---------\n',fn);

注意物件的prototype、__proto__屬性也是乙個物件

當呼叫fn.test()時會先到fn的屬性中找test方法找不到才回到fn的顯式原型中找test方法

概念:

簡單理解就是原型鏈是用來查詢物件屬性的

例子:

fn在呼叫test時他會在他的隱式原型鏈查詢test方法是否存在,首先到fn的隱式原型中查詢若沒有,再到object中查詢

而object的–proto–是整個原型鏈的盡頭

注意點:

當設定物件屬性值的時候不會去查詢原型鏈。而是直接給物件新增屬性,若物件沒有該屬性

例二:

整個函式新建時內部原型鏈的結構簡單描述就如上圖,可看出function的隱式原型是等於顯示原型的。

js高階 顯示原型與隱式原型

每個函式function都有乙個prototype,即顯示原型 屬性 每個例項物件都有乙個 proto 可稱為隱式原型 屬性 物件 例項 的隱式原型的值為其對應建構函式的顯示原型的值,即他們都指向同乙個物件 記憶體結構 如圖 定義建構函式 function fun 向建構函式中新增乙個方法,這裡沒用...

js 的隱式轉換與顯式轉換

隱式轉換 1.undefined與null相等,但不恒等 2.乙個是number乙個是string時,會嘗試將string轉換為number 3.隱式轉換將boolean轉換為number,0或1 4.隱式轉換將object轉換成number或string,取決於另外乙個對比量的型別 5.對於0 空...

類式繼承與原型繼承之間的效能差異與原型鏈結構區別

這篇討論下類式繼承與原型繼承之間的效能差異與原型鏈結構區別 我們先開始討論原型鏈結構區別,在前面的兩個章節裡面,分別層現了類式繼承與原型繼承的實現方式。接下來我利用前面2個章節的 來宣告2個物件。原型繼承 var p1 clone person var p2 clone person 類式繼承 va...