本章思考题均为undefined疑问
来源:2-5 【原型】深度透彻掌握原型 【为深度透彻掌握TS类,继承扎根】-3

LPZGO
2021-09-10
老师您好,不明白为什么我尝试的时候输出的都是undefined,好像和您提供的参考解析不太一样
4回答
-
同学,你上面已经输出了共同好友, 最后一条语句不要加 console.log 因为show方法里已经有了console.log
直接这样写就可以
QQZhangSan.__proto__.show();
QQZhangSan.show();// 原型对象空间
012021-09-11 -
keviny79
2021-09-10
同学你 先理解下以下两点,然后再试
012021-09-11 -
keviny79
2021-09-10
2. 当原型和实例上都有show()方法,区别如下:
2.1 QQZhangSan.__proto__.show()输出和上面1.1 完全相同 [this 还是指向原型对象空间]
2.2 QQZhangSan.show()会直接从实例对象空间找到show()方法,输出结果和规律上1.2完全相同
00 -
keviny79
2021-09-10
QQZhangSan.__proto__.show() 和QQZhangSan.show()区别如下:
1. 当只有原型上有show()方法, 而实例上没有show()方法 区别如下:
1.1 QQZhangSan.__proto__.show() 中的show方法this始终指向原型对象空间
因为只有commonfriends为原型对象空间中的属性,所以能输出好友信息
其他的this.QQNo,this.QQAge this.QQMark都为undefined
1.2 QQZhangSan.show()会首先从实例对象空间查找show()方法,但是没有找到,
就顺着__proto__【后面说的原型链属性】找到原型对象空间中的show()方法
此刻show()方法中的this表示QQZhangSan实例对象变量,
this.QQNo,this.QQAge this.QQMark都能直接输出,this.commonfriends
会继续查找原型对象空间,在输出好友信息
00
相似问题