函式和原型

2022-09-06 20:03:13 字數 978 閱讀 3160

在看這篇文章 《理解j**ascript原型》 時,有幾段話把我看得一頭霧水,舉的列子我也沒太看明白

「每個函式都有乙個原型屬性。反過來,如果不是函式,將不會有這樣乙個屬性。

」「函式a的原型屬性(prototype property )是乙個物件,當這個函式被用作建構函式來建立例項時,該函式的原型屬性將被作為原型賦值給所有物件例項」

於是自己在chrome控制台測試了一下,總算能理解了,我們把這幾段話一句句來剖析:

「每個函式都有乙個原型屬性。」

「函式a的原型屬性(prototype property )是乙個物件

可看出,a是乙個函式,擁有原型屬性protoype,且該屬性是乙個物件

「反過來,如果不是函式,將不會有這樣乙個屬性。」

b是由a例項化的乙個物件,不是函式,故b沒有原型屬性

「當這個函式被用作建構函式來建立例項時,該函式的原型屬性將被作為原型賦值給所有物件例項

」繼續看這一句話,上面b是由a例項化的,所以a會將其原型屬性(prototype)賦給b的原型

可看到b的原型和a的原型屬性一致

也許看到這裡你已經被 原型

和原型屬性

弄暈了,我們闡釋一下二者的區別:

原型屬性

是指物件的屬性 prototype

原型  

是指物件的屬性 __proto__,對應的是該物件建構函式內的原型屬性

所以獲得乙個物件的原型可以通過obj.__proto__,也可以用obj.constructor.prototype獲得

建構函式和原型

function student name,age student.prototype var zs new student 張三 18 我們先來看一張圖 在這張圖里student建構函式的prototype指向student原型物件,student原型物件又指向student建構函式,zs物件.p...

建構函式和原型

new的時候做的的4個事情 1.在記憶體中建立乙個新的空物件 2.讓this指向這個新物件 3.執行建構函式裡的 給這個新物件 新增屬性和方法 4.返回這個新物件 靜態成員與例項成員 靜態成員 由構造本身建立的成員 只能由建構函式本身來訪問 例項成員 在建構函式內部建立的物件成員為例項成員 只能由例...

原型和原型鏈 及 instanceof函式

function a var a new a a a.proto a.prototype a.prototype.proto object.prototype object.prototype.proto null定義 instanceof運算時會遞迴查詢l的原型鏈,即l.proto proto p...