最近兩天一直在看js中關於原型和原型鏈的內容,沒有特別理解,但自己總結了一些基礎知識點。
1.JS中萬物皆對象,但是分爲兩大類,函數對象,普通對象
2.所有的函數對象都有一個prototype屬性,這個屬性引用了一個對象,即原型對象,也稱原型。然而普通對象是沒有prototype屬性,只有_proto_屬性
3.原型對象就是普通對象,(Function.prototype除外,因爲它是函數對象,但比較特殊,因爲沒有prototype屬性)
4.類實例對象的內部_proto_指向它構造函數的prototype
5.obj.constructor === A.prototype.constructor,就是說類的實例對象的constructor屬性永遠指向構造函數的prototype.constructor,即使A.prototype不再指向原來A的原型
6.obj.constructor.prototype === A.prototype。當A.prototype改變,則不成立
7.類繼承:(JS中沒有類,這裏只是指構造函數)。雖然繼承了A構造函數對象的所有屬性方法,但不能繼承A原型對象的成員,而要實現這個目的,就是在此基礎上再添加原型繼承
8.原型對象主要用於繼承,JS在創建對象的時候,(不論是普通對象 還是函數對象),都有一個叫做_proto_的內置屬性,用於指向創建它的函數對象的原型對象prototype
9.原型對象prototype中都有個預定義的constructor屬性,用於引用它的函數對象。比如說:person.prototype.constructor === person。
10.Object.constructor === Function。如何查找一個對象的constructor,就是在該對象的原型鏈上尋找碰到的第一個constructor屬性所指向的對象
11.原型和原型鏈是JS實現繼承的一種模型
12.原型鏈的形成是靠_proto_,而不是prototype