Skip to content

instanceof 是基于原型链实现的

如何准确判断一个变量是数组?

js
a instanceof Array;

利用之前的一个例子

js
class People {
  constructor(name) {
    this.name = name;
  }
  eat() {
    console.log(`${this.name} eat something`);
  }
}
//子类
class Student extends People {
  constructor(name, number) {
    super(name);
    this.number = number;
  }
  sayHi() {
    console.log(`姓名${this.name},学号${this.number}`);
  }
}
//实例化
const xialuo = new Student('夏洛', 100);
console.log(xialuo.name, xialuo.number); //夏洛 100
xialuo.sayHi(); //姓名夏洛,学号100
xialuo.eat(); //夏洛 eat something

原型链

js
console.log(Student.prototype.__proto__); //隐式原型
console.log(People.prototype); // 显示原型
console.log(People.prototype === Student.prototype.__proto__); // true

通过原型链来理解 instanceof

js
console.log(xialuo instanceof Object); //true

基于 MIT 许可发布