2-5问答: QQZhangSan.show() 以及 QQZhangSan.__proto__.show()

来源:1-1 课程导学

Bokk

2021-08-02

问题

QQZhangSan.show() 以及 QQZhangSan.__proto__.show() 是否一样?

function QQUsers(QQNo_, QQAge_, QQMark_) {
  this.QQNo = QQNo_; //QQ号
  this.QQAge = QQAge_; //Q龄
  this.QQMark = QQMark_
}

QQUsers.prototype.commonfriends = [
  '骑驴看海',
  '大漠上的英雄',
  '坚实的果子',
  '小草',
];
QQUsers.prototype.show = function () {
  console.log(`QQ号:${this.QQNo},QQ龄:${this.QQAge},QQ标注:${this.QQMark}`);
  console.log(`共同的好友是:${this.commonfriends}`);
  console.log();
};

回答

不一样.

具体来说QQ号, QQ龄和QQ标注是不一样的, commonfriends是一样的. 对于QQZhangSan.show()来说, this指向的是QQZhangSan, 可以获取到QQZhangSan属性(QQNo, QQAge, QQMark)的值; 对于QQZhangSan.__proto__.show()来说, this指向的是QQZhangSan的原型, 在原型中只有commonfriends, 没有QQ号, QQ龄和QQ标注, 所以QQZhangSan.__proto__.show()只能获得commonfriends的值, 其它都为undefined

写回答

3回答

慕村1546111

2021-10-19

看来我想当然了, 想当然的认为一样, 认为调用的不都是一个函数吗? 却没考虑this指向的问题, 果然写前端很少用对象留下的问题

0
0

keviny79

2021-08-02

回答是正确的

0
0

keviny79

2021-08-02

楼上解释正确

0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程