js中关于原型和原型链有 __proto__ 、prototype、constructor 频频出现在面试题中,但是记得多了反而容易记混。
这里简单总结下每个属性的使用场景,方便记忆。
- 对象和函数都有 __proto__,对象的 __proto__指向构造函数的prototype,构造函数的__proto__指向 Function.prototype
- 对象和函数都有constructor,对象的 constructor指向构造函数,构造函数的constructor指向 Function
- 函数才有 prototype
- 函数的prototype又是一个对象,但是 Funtion.prototype 不是对象!!!
- 特殊记忆:typeof Function.prototype==="function"
- Object因为O大写,可以看出本质也是一个构造函数
- __proto__ 指向一个原型对象,构造函数.prototype.__proto__ === Object.prototype
- 特殊记忆:Object.prototype.__proto__===null,因为 Object.prototype 为js 原型链的顶端。