- 当 new 一个函数的时候会创建一个对象,被创建对象.
__proto__
=== 函数.prototype
var object = {}
object.__proto__ === Object.prototype
var fn = function(){}
fn.__proto__ === Function.prototype
var array = []
array.__proto__ === Array.prototype
true.__proto__ === Boolean.prototype
- 一切函数都是由 Function 这个函数创建的,被创建的函数.
__proto__
=== Function.prototype
Function.__proto__ === Function.prototype
Array.__proto__ === Function.prototype
Object.__proto__ === Function.prototype
- 一切函数的原型对象都是由 Object 这个函数创建的,所以一切函数.
prototype
.__proto__
=== Object.prototype
Function.prototype.__proto__ === Object.prototype
Array.prototype.__proto__ === Object.prototype
- 特殊情况
//因为
arr.__proto__ = Function.prototype
array.__proto__.__proto__ === Object.prototype
//所以
Function.prototype.__proto__ === Object.prototype
总结,JavaScript 只有一种结构:对象。每个实例对象(object )都有一个私有属性(称之为__proto__
)指向它的原型对象(prototype
)。该原型对象也有一个自己的原型对象(__proto__
) ,层层向上直到一个对象的原型对象为 null。这叫做原型链。
null 没有原型,并作为这个原型链中的最后一个环节。
网友评论