JavaScript中構(gòu)造函數(shù)與原型鏈之間的關(guān)系詳解
在Javascript中不存在class的概念,它的class概念是通過構(gòu)造函數(shù)(constructor)與原型鏈(prototype)來實(shí)現(xiàn)。
1.構(gòu)造函數(shù)(constructor):創(chuàng)建對象時(shí)的初始化對象,總是與new 關(guān)鍵是一同出現(xiàn)。
構(gòu)造函數(shù)存在以下特點(diǎn):
- 1、構(gòu)造函數(shù)內(nèi)的this 指向當(dāng)前實(shí)例對象。
- 2、使用new 關(guān)鍵字實(shí)例化當(dāng)前對象。
- 3、構(gòu)造函數(shù)首字母大寫,區(qū)分普通函數(shù)。
- 4、實(shí)例對象都可以繼承構(gòu)造函數(shù)中的屬性和方法。但是,同一個(gè)對象實(shí)例之間,無法共享屬性。
2.原型(prototype):是一個(gè)對象,實(shí)現(xiàn)對象的屬性繼承。javascript 中的對象通過 proto 來指向原型對象,可以通過Object.__proto__ 來訪問
3.構(gòu)造函數(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>
從以上輸出結(jié)果可以看出:
構(gòu)造函數(shù)的 __proto__ 指向原型對象;
原型的constructor 指向構(gòu)造函數(shù)Function;
原型的 prototype.__proto__ 等于 Object.__proto__;
實(shí)例 的 constructor.prototype 指向原型;
實(shí)例的constructor 指向構(gòu)造函數(shù)
引用圖例:
![1460000018155881][1]
- JavaScript繼承基礎(chǔ)講解(原型鏈、借用構(gòu)造函數(shù)、混合模式、原型式繼承、寄生式繼承、寄生組合式繼承)
- 深入淺析js原型鏈和vue構(gòu)造函數(shù)
- 基于JavaScript實(shí)現(xiàn)繼承機(jī)制之構(gòu)造函數(shù)+原型鏈混合方式的使用詳解
- 一文秒懂JavaScript構(gòu)造函數(shù)、實(shí)例、原型對象以及原型鏈
- JS精髓原型鏈繼承及構(gòu)造函數(shù)繼承問題糾正
- javascript的構(gòu)造函數(shù), 原型,原型鏈和new你了解多少
- JavaScript原型和原型鏈與構(gòu)造函數(shù)和實(shí)例之間的關(guān)系詳解
- JavaScript構(gòu)造函數(shù)與原型、原型鏈?zhǔn)纠斀?/a>
相關(guān)文章
javascript學(xué)習(xí)筆記(六) Date 日期類型
javascript學(xué)習(xí)筆記之Date 日期類型介紹,需要的朋友可以參考下2012-06-06
對javascript基本對象的屬性以及方法的實(shí)例介紹
對javascript基本對象的屬性以及方法的實(shí)例介紹...2007-01-01
Javascript 按位與賦值運(yùn)算符 (&=)使用介紹
這篇文章主要介紹了Javascript 按位與賦值運(yùn)算符 (&=)的相關(guān)資料,需要的朋友可以參考下2014-02-02
Javascript中Array.prototype.map()詳解
map 方法會給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次 callback 函數(shù)。callback 每次執(zhí)行后的返回值組合起來形成一個(gè)新數(shù)組。 callback 函數(shù)只會在有值的索引上被調(diào)用;那些從來沒被賦過值或者使用 delete 刪除的索引則不會被調(diào)用。2014-10-10
window.parent與window.openner區(qū)別介紹
今天總結(jié)一下js中幾個(gè)對象的區(qū)別和用法,對這幾個(gè)概念混淆的朋友可以看看2012-04-04
寫給想學(xué)習(xí)Javascript的朋友一點(diǎn)學(xué)習(xí)經(jīng)驗(yàn)小結(jié)
今天逛論壇時(shí)看到有朋友問,是否有專門教Javascript的學(xué)校,這里想想把自己的一點(diǎn)建議和自己3年來的前端Javascript開發(fā)的經(jīng)驗(yàn)跟大家分享下,也給出幾本個(gè)人認(rèn)為不錯(cuò)的書來做為大家學(xué)習(xí)的參考資料。2010-11-11

