js4

原型链

一、构造函数

构造函数模式是为了创建一个自定义,并创建这个类的实例。构造函数模式中有了类和实例的概念,实例和实例相互独立‘’

构造函数是普通的函数,不同的是构造函数需要使用new关键字调用

二、原型

在js中,每当定义一个函数数据类型(普通函数、类)时,会天生自带一个prototype属性, 它指向函数的原型对象,并且这个属性是对象数据类型的值。原型对象相当于一个公共区域,所有同一个类的实例都可以访问这个原型对象,我们可以把共有内容设置到原型对象中

构造函数和实例原型之间的关系:

三、原型链

每一个数据对象类型(普通的对象、实例、prototype)也天生自带一个__ proto __ 属性,属性值是当前实例所属原型(prototype),原型对象有一个属性constructor,它指向函数对象

1
2
3
4
function Person() {}
var person = new Person()
console.log(person.__proto__ === Person.prototype)//true
console.log(Person.prototype.constructor===Person)//true

何为原型链

person → Person → Object ,普通人继承人类,人类继承对象类

当我们访问对象的一个属性或方法时, 会先在对象自身寻找, 如果有则直接用, 没有就去原型中找, 如果找到直接使用, 如果没有就去原型的原型中找, 直到找到Object对象, Object对象的原型不存在, 如果在Object中没找到, 则返回undefine

Object是所有对象数据类型的基类, 在Object.prototype上没有__ proto __ 属性