JavaScript中構造函數(shù)與原型鏈之間的關系詳解
在Javascript中不存在class的概念,它的class概念是通過構造函數(shù)(constructor)與原型鏈(prototype)來實現(xiàn)。
1.構造函數(shù)(constructor):創(chuàng)建對象時的初始化對象,總是與new 關鍵是一同出現(xiàn)。
構造函數(shù)存在以下特點:
- 1、構造函數(shù)內的this 指向當前實例對象。
- 2、使用new 關鍵字實例化當前對象。
- 3、構造函數(shù)首字母大寫,區(qū)分普通函數(shù)。
- 4、實例對象都可以繼承構造函數(shù)中的屬性和方法。但是,同一個對象實例之間,無法共享屬性。
2.原型(prototype):是一個對象,實現(xiàn)對象的屬性繼承。javascript 中的對象通過 proto 來指向原型對象,可以通過Object.__proto__ 來訪問
3.構造函數(shù)與與原型的聯(lián)系:
<script>
function Demo(){
}
var demo = new Demo()
var data= demo.prototype = function(){
}
console.log(demo.__proto__)
console.log(data.constructor )
console.log(data.prototype.__proto__)
console.log(demo.constructor.prototype)
console.log(demo.constructor)
輸出:
{constructor: ƒ}constructor: ƒ Demo()__proto__: Object
ƒ Function() { [native code] }
{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
{constructor: ƒ}
ƒ Demo(){ }
</script>
從以上輸出結果可以看出:
構造函數(shù)的 __proto__ 指向原型對象;
原型的constructor 指向構造函數(shù)Function;
原型的 prototype.__proto__ 等于 Object.__proto__;
實例 的 constructor.prototype 指向原型;
實例的constructor 指向構造函數(shù)
引用圖例:
![1460000018155881][1]
相關文章
深入理解JavaScript系列(49):Function模式(上篇)
這篇文章主要介紹了深入理解JavaScript系列(49):Function模式(上篇),本文講解了回調函數(shù)、配置對象、返回函數(shù)、偏應用、Currying等內容,需要的朋友可以參考下2015-03-03
解析js中獲得父窗口鏈接getParent方法以及各種打開窗口的方法
本篇文章是對js中獲得父窗口鏈接getParent方法以及各種打開窗口的方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06
深入理解JavaScript系列(18):面向對象編程之ECMAScript實現(xiàn)
這篇文章主要介紹了深入理解JavaScript系列(18):面向對象編程之ECMAScript實現(xiàn),本文講解了數(shù)據(jù)類型、原始值類型、Object類型、動態(tài)性、內置對象、原生對象及宿主對象等內容,需要的朋友可以參考下2015-03-03

