原型与原型链 - 对象与函数关系笔记

__proto__和constructor属性是对象所独有的,prototype属性是函数所独有的

在JS中函数也是一种对象,函数也拥有__proto__和constructor属性

对象由函数生成。生成对象时,对象的__proto__属性指向函数的prototype属性

演示代码

function Foo(){...};

var f1 = new Foo();

创建一个构造函数Foo(),并用new关键字实例化,得到实例化对象f1

类型的原型(prototype)

原型与原型链 - 对象与函数关系笔记

prototype是函数所独有的,它是从一个函数指向一个对象,所指的对象就是函数的原型对象

作用: 让函数所实例化的对象都可以找到公用的属性和方法

几乎所有的函数在创建时,会默认创建该函数的prototype对象

原型(proto

原型与原型链 - 对象与函数关系笔记

__proto__属性是对象所拥有的,__proto__属性都是由一个对象指向另一个对象,也就是指向它们的原型对象(也可以理解为父对象)

作用: 当访问一个对象的属性时,如果该对象内部不存在这个访问的属性,则会去它的__proto__属性所指的对象(父对象)里寻找,如果父对象不存在这个属性,则继续往祖先对象的__proto__所指的对象(爷爷对象)里寻找,一直往上寻找...直到原型链顶端null,此时如果继续往上相当于在null上取属性,系统就会报错(null可以理解为原型链的终点,到该点时结束),以上从访问的对象到null的一条链,我们称为原型链

我们平时调用多数方法都是靠__proto__继承的

prototype所指的函数原型对象和__proto__所指原型对象是不同的

构造函数(constructor)

原型与原型链 - 对象与函数关系笔记

Constructor也是对象才拥有的,他是由一个对象指向函数,指向该对象的构造函数,每个对象都有构造函数(本身拥有或继承,继承要结合__proto__属性查看),Function这个对象的构造函数是它自己本身,所有函数和对象最终都是由Funtion构造函数得来的,Constructor属性的终点即为Function这个函数

原型与原型链

原型与原型链 - 对象与函数关系笔记

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypjzp.html