(所謂“五節(jié)點原型鏈”,即 n(1-實例)--N.prototype(2-第二層原型對象)--M.prototype(3-第一層原型對象)--Object.prototype(4-根構造函數原型對象)--null(5-馕))
根據《廖雪峰javascript教程》-面向對象編程-原型繼承 的內容,我在嘗試用代碼來驗證,
很不幸,沒能成功。是不是廖老師這里的解釋有誤??
話不多說,貼代碼! ↓↓
/**
* 想構造一個“5節(jié)點原型鏈”: n(實例)--Nnn.prototype(第二層)-- Mmm.prototype(第一層)-- Object.prototype -- null
*/
//構造函數 Mmm(第一層)
function Mmm(){
this.name = 'MMM';
this.age = 18;
this.do = function(){console.log("DO!!");}
}
var mmm = new Mmm();
mmm.do(); //輸出 DO!! [第一層,沒問題]
//構造函數 Nnn(第二層) 它的原型對象是Mmm
function Nnn(){
this.nnname = 'NNN';//僅增添一個屬性
}
//開始按照廖雪峰老師的思路(參見《廖雪峰javascript教程》面向對象編程-原型繼承)
/**
* STEP1 先建立空函數F
* STEP2 F.prototype指向第一層prototypa
* STEP3 再把第二層prototype指向new F()
* STEP4 最后“修復”第二層原型對象的構造函數屬性為第二層構造函數本身
* (雖然我到現在沒搞懂 最后為什么要“修正”。。。)
*/
function F(){}
F.prototype = Mmm.prototype;
Nnn.prototype = new F();
Nnn.prototype.constructor = Nnn;
//然鵝,并沒有什么X用。
var nnn= new Nnn();
nnn.do();//報錯??!。。。do方法沒有繼承過來...
到底是什么原因呢?
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數據專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。