很多新入门前端的同学,对于Javscript原型链都十分恐惧,但是面试题能问到的点都比较简单,记住以下内容即可完美应对!
常考题 1:原型链层级结构
- Object
- Function
- 内建对象:String, Number, Boolean, Array, Date, Math等
- 自定义对象
(图片来自网络,侵权即删)
- 每个构造函数(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)