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

es5 原型链继承,子类调用父类方法问题

es5 原型链继承,子类调用父类方法问题

浮云间 2019-03-06 14:15:16
代码如下:function Person(name){    this.name=name;    this.className="person";  //私有属性,只能通过方法访问,不能通过对象直接访问}Person.prototype.getClassName=function(){    console.log(this.className);    console.log('over');}function Man(){  console.log('start');}Man.prototype=new Person();//1    通过原型链的指向来继承// Man.prototype=new Man("Davin");//2var man=new Man();//Man的构造函数 会打印start// console.log(man.getClassName());console.log(man.getClassName());  //继承了之后,可以调用父类的方法输出结果:startpersonoverundefined不知道为什么总是会打印出一个“undefined”,就是在“console.log(man.getClassName()); ”这一句打印的,要是把这一句注释掉,就不会有了,那这个打印是怎么来的那?
查看完整描述

4 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

var className = man.getClassName()
console.log(className, className === undefined);

查看完整回答
反对 回复 2019-03-26
?
温温酱

TA贡献1752条经验 获得超4个赞

这里没有任何问题,这里最后一个undefined是

console.log(man.getClassName()); //继承了之后,可以调用父类的方法

getClassName没有return值,所以返回undefined,前面的都是正常执行,

你可以在


Person.prototype.getClassName=function(){

    console.log(this.className,'没找到');

    console.log('over','over');

    return 1;

}

看看结果就变了

start 

person 

over 

1


查看完整回答
反对 回复 2019-03-26
?
杨魅力

TA贡献1811条经验 获得超6个赞

JavaScript高级程序设计(第3版)第64页,函数不设置return,默认放回undefined。


查看完整回答
反对 回复 2019-03-26
  • 4 回答
  • 0 关注
  • 697 浏览
慕课专栏
更多

添加回答

举报

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