Javascript 基础(二)—— 原型链

135 阅读1分钟

很多新入门前端的同学,对于Javscript原型链都十分恐惧,但是面试题能问到的点都比较简单,记住以下内容即可完美应对!

常考题 1:原型链层级结构

  • Object
  • Function
  • 内建对象:String, Number, Boolean, Array, Date, Math等
  • 自定义对象

image.png

(图片来自网络,侵权即删)

  • 每个构造函数(Person)都有prototype属性,该属性指向一个对象,这里写作prototype对象(Person.prototype)
  • 每个prototype对象(Person.prototype)都有constructor属性,该属性指向构造函数(Person)
  • 每个实例(person)都有一个__proto__属性,该属性指向prototype对象(Person.prototype)
  • 原型的原型也是一个对象,dateNow._proto_._proto_ 最终会追溯到Object.prototype

举例:

let dateNow = new Date(); 

dateNow.__proto__ === Date.prototype

Date.prototype.__proto__ // {} 

Date.prototype.__proto__.proto__ // null

常考题 2:原型链的终点(顶端)

  • JS原型链的最终指向:Object.prototype
Object.prototype // {}
Object.prototype.__proto__ === null

常考题 3:通过原型链判断一个对象是否存在于另一个对象的原型链中

a.isPrototypeOf(b)