摘要:每個原型都有一個屬性指向關聯的構造函數由于實例對象可以繼承原型對象的屬性,所以實例對象也擁有屬性,同樣指向原型對象對應的構造函數。
構造函數:function Foo ( ) { }; 實例對象:let f1=new Foo;
談到繼承時,JavaScript 只有一種結構:對象
每個函數都有 prototype 屬性,除了 Function.prototype.bind(),該屬性指向原型。
prototype每一個JavaScript對象(null除外)在創建的時候就會與之關聯另一個對象,這個對象就是我們所說的原型,每一個對象都會從原型"繼承"屬性。
函數的 prototype 屬性指向了一個對象,這個對象正是調用該構造函數而創建的實例的原型,也就是這個例子中的 f1 的原型。prototype帶有__proto__和constructor
proto每一個JavaScript對象(除了 null )都具有的一個屬性,叫__proto__,這個屬性會指向了創建該對象的構造函數的原型。
console.log(f1._proto_ === Foo.prototype) // trueconstructor
每個原型都有一個 constructor 屬性指向關聯的構造函數
由于實例對象可以繼承原型對象的屬性,所以實例對象也擁有constructor屬性,同樣指向原型對象對應的構造函數。
console.log(Foo.prototype.constructor === Foo);//true console.log(f1.constructor === Foo);//true console.log(f1.hasOwnProperty("constructor"));//false原型鏈
JS在創建對象(不論是普通對象還是函數對象)的時候,都有一個叫做__proto__的內置屬性,用于指向創建它的函數對象的原型對象prototype。以上面的例子為例:
console.log(fo.__proto__ === Foo.prototype) //true
同樣Foo.prototype也有proto屬性
console.log(Foo.prototype.__proto__ === Object.prototype) //true
Object.prototype對象也有proto屬性,但它比較特殊,為null
console.log(Object.prototype.__proto__ === null)
我們把這個有proto串起來的直到Object.prototype.proto為null的鏈叫做原型鏈。原型鏈的形成是真正是靠proto 而非prototype
總結
每個構造函數都有一個原型對象
Foo.prototype
原型對象都包含一個指向構造函數的指針
Foo.prototype.constructor === Foo
實例都包含一個指向原型對象的內部指針
fo.__proto__ === Foo.prototype
更多文章請前往語雀
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99520.html
摘要:要搞清這三種關系指向之間的關系拗口,其實也就是要搞懂,構造函數由構造函數操作創造出的實例對象和構造函數的原型對象之間的關系。 寫在前面 這篇博客來源于,有天mentor突然傳給我了這張祖傳的圖片,并且發誓一定要給我講清楚,然鵝在他的一番激情講解之后,他自己也被繞懵了...于是后來我決定整理一下似乎還有點清晰的思路,記錄一下我對這張圖的理解。作為一個小白,對于js中這些比較復雜的概念的理...
摘要:這正是我們想要的太棒了毫不意外的,這種繼承的方式被稱為構造函數繼承,在中是一種關鍵的實現的繼承方法,相信你已經很好的掌握了。 你應該知道,JavaScript是一門基于原型鏈的語言,而我們今天的主題 -- 繼承就和原型鏈這一概念息息相關。甚至可以說,所謂的原型鏈就是一條繼承鏈。有些困惑了嗎?接著看下去吧。 一、構造函數,原型屬性與實例對象 要搞清楚如何在JavaScript中實現繼承,...
摘要:共享原型鏈現在我們還有另一個對象如圖那么和其實是同一東西,也就是。改進通過第一節可以知道,我們可以通過原型鏈來解決重復創建的問題我們先創建一個士兵原型,然后讓士兵的指向士兵原型。所以這個是原型鏈繼承的缺點,原因是和指向同一個地址即父類的。 在理解繼承之前,需要知道 js 的三個東西: 什么是 JS 原型鏈 this 的值到底是什么 JS 的new 到底是干什么的 想閱讀更多優質文章...
摘要:的原型鏈,需要深刻的研究才能搞懂。對象都是通過函數即構造函數創建的。即這里的成為隱式原型。而構造函數的屬性指向自身。這個對象的構造函數的是一個對象。走到原型鏈的終結。 - JS是一個非常有魅力的語言也是一個比較煩人的語言,主要就是因為他的特殊性靈活性。 JS的原型鏈,需要深刻的研究才能搞懂。不要糾結細節吧。實在不行就按這個死背住,慢慢就理解了??傊删褪且痪湓捜f物皆對象。 結合這個圖示...
閱讀 3410·2023-04-26 02:41
閱讀 2463·2023-04-26 00:14
閱讀 2871·2021-08-11 10:22
閱讀 1288·2019-12-27 11:38
閱讀 3579·2019-08-29 18:34
閱讀 2386·2019-08-29 12:13
閱讀 2958·2019-08-26 18:26
閱讀 1862·2019-08-26 16:49