一、原型分为两种,直接原型和间接原型。
对于普通对象来说,Object.prototype是直接原型。
对于函数和数组来说,Object.prototype是间接原型。
1.每个对象都有原型,原型里存放着对象的共有属性。
2.对象的原型也是对象。
3.对象的原型也有原型。
Object.prototype保存了一个对象的地址,这个对象包含了所有普通对象的共有属性,
叫做对象的原型。
Array.prototype保存了一个对象的地址,这个对象包含了所有数组的共有属性,叫做对象的原型。
Function.prototype保存了一个对象的地址,这个对象包含了所有函数的共有属性,叫做对象的原型。
原型链:JavaScript中所有的对象都是由它的原型对象继承而来的,而原型对象自身也是一个对象,它也有自己的原型对象,这样层层上溯,就形成了一个类似链表的结构,这就是原型链。
所有原型链的终点都是Object函数的prototype属性,因为在JavaScript中的对象都默认由Object()构造。Object.prototype指向的原型对象同样拥有原型,不过他的原型是null,而null没有原型。
所以查找属性的时候查到了Object.prototype就可以停止查找了。
重点知识:
1.JS公式
2.对象.proto ===其构造函数.prototype
1.根公理
object.prototype是所有对象的(直接或间接)原型
1.函数公理
2.所有函数都是由Function构造的
原文:https://www.cnblogs.com/sna-ling/p/12189815.html