1. 什么是原型? 什么是原型链?
在js中万物皆对象,所以原型又称原型对象,每个对象都有一个__proto__属性,这个属性就是原型对象。
另外在js中的函数比较特殊,它有一个prototype属性,是函数的原型对象,称为函数原型。
函数对象的原型:Person.prototype
普通对象的原型:obj.proto
原型链:一个对象,通过__proto__或者prototype可以找到它的原型对象,原型对象继续向上查找原型对象,一直到Object对象为至,这样的递归查找过程就是原型链(继承链)。
2. 普通对象和函数对象?
概括:
使用typeof判断类型时,返回function的都是函数对象,否则是普通对象。(特殊的是Object)
或者如下描述:
凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
3. 构造函数的原型对象和构造函数本身的关系?
原型对象(Person.prototype)是 构造函数(Person)的一个实例。
原型的构造函数属性(constructor)等于构造函数(Person)本身
Person.prototype.constructor = Person
构造函数 > 原型对象
原型及原型链文档:
https://baijiahao.baidu.com/s?id=1604426873229560999&wfr=spider&for=pc
https://www.jianshu.com/p/dee9f8b14771
https://zhuanlan.zhihu.com/p/35790971
Author: 李金帅
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.