JS的原型及原型鏈的講解,網上很多。這里自己也記錄一下。
JS的重要核心概念:萬物皆對象。
對象主要是兩個: Object Function
一、JS對象的原型
1、 函數對象:
function Foo(){
this.type = 'foot';
}
JS 的每一個函數對象都有一個 prototype 屬性,這個prototype指向一個Object實例。
函數對象.png
筆記:
1、function 也是一個對象
2、function 有一個prototype 屬性
3、prototype屬性指向的是一個實例對象,這個對象包含兩個屬性 constructor和 _ proto _
2、普通實例對象
普通對象.png
普通對象的在內存里面有兩個屬性:
a、type 繼承而來
b、__ proto_ 這個是屬性,這個屬性指向一個實例對象,這個對象包含兩個屬性constructor和 proto
二、原型鏈
上面的例子中的foo.proto和Foo.prototype指向的是同一個對象。
注意:
foo.__proto 指向的是另外一個存在的實例對象
Foo.prototype 指向的也是一個存在的實例對象
原型鏈及繼承關系.png
JS的繼承總是有一個第三方對象的存在。 這個對象的名字叫 Foo.prototype, 是一個對象。