周嵐


摘? 要:JavaScript是面向Web的編程語(yǔ)言,其高端、動(dòng)態(tài)以及面向?qū)ο蟮木幊田L(fēng)格,使得它已經(jīng)從一門(mén)簡(jiǎn)單的腳本語(yǔ)言進(jìn)化成為一門(mén)強(qiáng)大的編程語(yǔ)言。JS的核心是支持面向?qū)ο蟮模瑫r(shí)它也提供了強(qiáng)大靈活的面向?qū)ο笳Z(yǔ)言的編程能力。本文針對(duì)JavaScript繼承機(jī)制的實(shí)現(xiàn)方式進(jìn)行了總結(jié)歸納,深入介紹了基于原型的繼承、構(gòu)造函數(shù)方式繼承、組合繼承、寄生式繼承等繼承機(jī)制,并分析了各自方式的優(yōu)缺點(diǎn),便于讀者更深層次的理解JavaScript面向?qū)ο缶幊虣C(jī)制。
關(guān)鍵詞:原型鏈;繼承;原型對(duì)象;構(gòu)造函數(shù)
中圖分類號(hào):TP311? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
Research on JavaScript Inheritance Mechanism
ZHOU Lan
(Xuzhou Finance and Economics Branch,Jiangsu Union Technical Institute,Xuzhou 221008,China)
Abstract:Javascript is a web-oriented programming language.Its high-end,dynamic and object-oriented programming style has evolved from a simple scripting language to a powerful programming language.The core of JS is to support object-oriented,and it also provides powerful and flexible programming ability of object-oriented language.This paper summarizes the implementation of JavaScript inheritance mechanism,introduces the inheritance mechanism based on prototype,constructor,combination and parasitism,and analyzes the advantages and disadvantages of each method,which is convenient for readers to understand the JavaScript object-oriented programming mechanism.
Keywords:prototype chain;inheritance;prototype object;constructor
1? ?引言(Introduction)
JavaScript是面向Web的編程語(yǔ)言,其高端、動(dòng)態(tài)和面向?qū)ο蟮木幊田L(fēng)格,使得JavaScript已經(jīng)從一門(mén)簡(jiǎn)單的腳本語(yǔ)言進(jìn)化成為一門(mén)強(qiáng)大的編程語(yǔ)言[1]。在面向?qū)ο螅∣OP)的程序設(shè)計(jì)范型中通常強(qiáng)調(diào)類的概念,早期的JavaScript中并沒(méi)有類的概念,JavaScript采用基于原型的繼承風(fēng)格,雖然使用起來(lái)非常靈活、高效,但對(duì)于初學(xué)者,要正確理解和使用原型對(duì)象及其繼承機(jī)制是非常困難的,本文對(duì)比類的繼承機(jī)制,并通過(guò)實(shí)例深入的討論了JavaScript特有的原型鏈繼承、構(gòu)造函數(shù)繼承、組合繼承、寄生組合繼承、class extend等多種繼承機(jī)制。希望能給初學(xué)者答疑解惑。
2? ?基于類的繼承(Class-based inheritance)
繼承是面向?qū)ο蟪绦蛑凶钪匾母拍钪弧@^承允許我們根據(jù)一個(gè)類來(lái)定義另一個(gè)類,當(dāng)創(chuàng)建一個(gè)類時(shí),不需要完全重新編寫(xiě)新的數(shù)據(jù)成員和數(shù)據(jù)函數(shù),只需要設(shè)計(jì)一個(gè)新的類,繼承了已有的類的成員即可。這個(gè)已有的類被稱為基類(父類),新的類被稱為派生類(子類)。……