代码如下: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);
温温酱
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
添加回答
举报
0/150
提交
取消