实例对象身上的__proto__指向谁?
- 指向所属构造函数的 prototype;
- 自定义构造函数Person new 出来的实例对象所属的构造函数是 Person;
- 实例对象 __proto__ 指向 Person.prototype;
Person.prototype 的 __proto__ 指向谁(Person.prototype所属的构造函数)?
- 因为Person.prototype 是一个对象数据类型(object);
- 在 js 内所有的 object 数据类型都是属于 object 这个内置的构造函数;
- Person.prototype 是 object 这个内置构造函数的实例对象;
- Person.prototype 的 __proto__ 指向 object.prototype;
Person 的 __proto__ 指向谁(Person所属的构造函数)?
- Person 是一个函数,函数本身也是一个对象,就会有 __proto__ 属性;
- 在 js 内,所有的函数都是属于内置构造函数 Function 的实例;
- Person.__proto__ 指向 Function.prototype;
object.prototype 的 __proto__指向谁?
- object.prototype 是一个对象数据类型,只要是对象,都是所属 object 这个内置构造函数的;
object.prototype 的 __proto__ 指向 object.prototype(出现死循环),所以,object.prototype 在 js 内叫做顶级原型,不再拥有 __proto__ ;- object.prototype 的 __proto__ 指向 null;
object 的__proto__指向谁?
- object 是一个内置构造函数,同时也是一个函数,同时也是一个对象;
- 在 js 内,所有的函数都是属于内置构造函数函数 Function 的实例;
- object 也是 Function 的实例;
- boject.__proto__ 指向 Function.prototype;
Function.prototype 的 __proto__ 指向谁?
- Function.prototype 也是一个对象数据类型;
- 只要是对象数据类型,都是 object 的实例;
- Function.prototype 的 __proto__ 指向 object.prototype;
Function 的 __proto__ 指向谁?
- Function 也是一个内置构造函数,也是一个函数;
- 在 js 内,所有的函数都是属于内置构造函数 Function 的实例;
- Function 自己是自己的构造函数、自己是自己的实例对象;
- Function 的构造函数是 Function;
只要是函数(内置构造函数、自定义构造函数),就会有 Prototype 原型对象属性和 __proto__ 属性:自定义构造函数 new 出来的所有实例对象属于对象数据类型,就会有 __proto__ 属性,通过其向上传递的特性,先指向其所属自定义构造函数的原型对象上,再指向 object(内部构造函数)的顶级原型对象上;自定义构造函数本身通过 __proto__ 属性,先指向其所属的 Function(内部构造函数)的原型对象上,再通过 Function 原型对象上的__proto__ 指向 object(内部构造函数)的顶级原型对象上。__proto__ 属性就像是接力棒,函数好比运动员,而原型对象就是运动员的手,最后一位就是内部构造函数 object 。
原型链:用 __proto__ 串联起来的对象链状结构,每一个对象数据类型,都有一个属于自己的原型链,用来访问对象成员。
对象访问机制:当需要访问对象成员时,首先在自身上查找,如没有,会自动去 __proto__ 上查找,再没有,继续向上访问,直到 object.prototype 都没有,则返回 undefined。