为了账号安全,请及时绑定邮箱和手机立即绑定

JS面向对象编程:构造“五节点原型链”失败,why?

JS面向对象编程:构造“五节点原型链”失败,why?

达令说 2019-03-14 18:15:18
(所谓“五节点原型链”,即 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方法没有继承过来...到底是什么原因呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信