(所谓“五节点原型链”,即 n(1-实例)--N.prototype(2-第二层原型对象)--M.prototype(3-第一层原型对象)--Object.prototype(4-根构造函数原型对象)--null(5-馕))根据《廖雪峰javascript教程》-面向对象编程-原型继承 的内容,我在尝试用代码来验证,很不幸,没能成功。是不是廖老师这里的解释有误??话不多说,贴代码! ↓↓/** * 想构造一个“5节点原型链”: 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(第二层) 它的原型对象是Mmmfunction 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方法没有继承过来...到底是什么原因呢?
添加回答
举报
0/150
提交
取消