原型链
一、构造函数
构造函数模式是为了创建一个自定义类,并创建这个类的实例。构造函数模式中有了类和实例的概念,实例和实例相互独立‘’
构造函数是普通的函数,不同的是构造函数需要使用new关键字调用
二、原型
在js中,每当定义一个函数数据类型(普通函数、类)时,会天生自带一个prototype属性, 它指向函数的原型对象,并且这个属性是对象数据类型的值。原型对象相当于一个公共区域,所有同一个类的实例都可以访问这个原型对象,我们可以把共有内容设置到原型对象中
构造函数和实例原型之间的关系:
三、原型链
每一个数据对象类型(普通的对象、实例、prototype)也天生自带一个__ proto __ 属性,属性值是当前实例所属原型(prototype),原型对象有一个属性constructor,它指向函数对象
1 | function Person() {} |
何为原型链
person → Person → Object ,普通人继承人类,人类继承对象类
当我们访问对象的一个属性或方法时, 会先在对象自身寻找, 如果有则直接用, 没有就去原型中找, 如果找到直接使用, 如果没有就去原型的原型中找, 直到找到Object对象, Object对象的原型不存在, 如果在Object中没找到, 则返回undefine
Object是所有对象数据类型的基类, 在Object.prototype上没有__ proto __ 属性