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

isPrototypeOf的问题

isPrototypeOf的问题

皈依舞 2018-09-17 06:33:22
const print = require('./print.js');class Student {    constructor(name) {        this.name = name;     }     hello() {         alert('Hello, ' + this.name + '!');     } }class PrimaryStudent extends Student {    constructor(name, grade) {        super(name); // 记得用super调用父类的构造方法!         this.grade = grade;     }     myGrade() {         print('I am at grade ' + this.grade);     } }let a = new PrimaryStudent({    name: 'tst',    grade: 100}) print(Student.prototype.isPrototypeOf(a)); print(Student.isPrototypeOf(a)); print(a instanceof Student);res:truefalsetrue对比原型式继承的方式var o1 = {}; var o2 = Object.create(o1); var o3 = Object.create(o2);o2.isPrototypeOf(o3) // trueo1.isPrototypeOf(o3) // true为什么会有不同的结果
查看完整描述

1 回答

?
米脂

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

这两个继承方式内在都是通过原型继承,结果也是一致的。

print(Student.prototype.isPrototypeOf(a));print(PrimaryStudent.prototype.isPrototypeOf(a));

都是true

print(Student.isPrototypeOf(a));
Student是构造函数,他不是a的原型,Student.prototype才是,所以自然是返回false
我觉得你给的例子很清晰,应该没啥奇怪的才对。


查看完整回答
反对 回复 2018-10-17
  • 1 回答
  • 0 关注
  • 470 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号