原型对象和原型链的指向

核心:对象.__proto__ === 函数.prototype

1.先列举几个例子

var obj = {}
obj.__proto__ === Object.prototype //true
var f = function(){}
f.__proto__ === Function.prototype //true
f.__proto__.__proto__ === Obiect.prototype //true
var arr = []
arr.__proto__ === Array.prototype //true
arr.__proto__.proto__ === Object.prototype //true
Array.__proto__ === Function.prototype //true
  • prototype是函数的原型对象,及prototype是一个对象,它会被对应的__proto__引用。
  • 自己的__proto__引用的就是构造你的那个构造函数的prototype
  • 所有构造函数的原型链最后都会引用Object的原型,及Object.prototype.而Object.prototype.__proto__ === null

2.几道关于原型的题

1.Object.__proto__ === ???
首先Object是构造函数,类型为函数,那么,函数由什么构造出来的呢? 很明显,是Function,所以Object.__proto__ === Function.prototype
2.Function.__proto__ === ???
首先Function类型为构造函数,它还是一个函数,函数是由Function构造出来的,所以Function.__proto__ === Function.prototype

var temp = new myFunction()
temp.__proto__ === ???

首先temp是一个函数,它是由myFunction构造出来的,所以temp.__proto__ === myFunction.prototype
4.特例

Object.prototype.__proto__ === null

你可能感兴趣的:(原型对象和原型链的指向)