请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

本章思考题均为undefined疑问

图片描述
图片描述

老师您好,不明白为什么我尝试的时候输出的都是undefined,好像和您提供的参考解析不太一样

正在回答

4回答

同学,你上面已经输出了共同好友,  最后一条语句不要加 console.log  因为show方法里已经有了console.log

直接这样写就可以

QQZhangSan.__proto__.show();

QQZhangSan.show();// 原型对象空间


0 回复 有任何疑惑可以回复我~
  • 提问者 LPZGO #1
    谢谢老师的解答,最后一行的两个undefined,是因为函数返回值是undefened,我应该直接调用两个函数显示show里面的console
    回复 有任何疑惑可以回复我~ 2021-09-11 10:11:10
keviny79 2021-09-10 09:13:29

同学你 先理解下以下两点,然后再试

0 回复 有任何疑惑可以回复我~
  • 提问者 LPZGO #1
    老师您好,我的理解是,在QQUser.prototype.show的时候已经在原型上有了show方法,下面new了张三这个实例里面是指向这个新的原型的,可是为什么张三.__proto__.show()会是undefined,就像控制台上最后一个console日志中显示的那样
    回复 有任何疑惑可以回复我~ 2021-09-11 08:54:34
keviny79 2021-09-10 09:12:43



  2. 当原型和实例上都有show()方法,区别如下:

     2.1 QQZhangSan.__proto__.show()输出和上面1.1 完全相同 [this 还是指向原型对象空间]

     2.2 QQZhangSan.show()会直接从实例对象空间找到show()方法,输出结果和规律上1.2完全相同


0 回复 有任何疑惑可以回复我~
keviny79 2021-09-10 09:12:31


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

    会继续查找原型对象空间,在输出好友信息


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信