1.Javascript中所有的对象都是Object的实例,并继承Object.prototype的属性和方法,也就是说,Object.prototype是最底层。
prototype是函数才有的属性
__proto__是每个对象都有的属性
prototype 就是一个对象,所以它有 __proto__ 属性,__proto__ 同时又指向 constructor 下的 prototype ,从而 形成了原型链,直到指向底层 Object.prototype
(Object.prototype.__proto__ === null)
Object => ƒ Object() { [native code] } ([native code] 指的是底层代码)
2.constructor 与 prototype 循环嵌套:
任何函数的constructor属性都指向Function类,而Function类的constructor又指向谁呢?其实也是Function类本身,也就构成了一个递归。
Object.prototype输出值为:{constructor: ƒ, defineGetter: ƒ, defineSetter: ƒ, hasOwnProperty: ƒ, lookupGetter: ƒ, …}
constructor 和 f 又组成一组对象,f 下又存在 prototype , 从而 f.prototype 下又指向 constructor, 进而形成嵌套。