概念:严格来说js并不是一门面对对象的语言,通过构造函数可以像其他语言一样实现面对对象的过程,构造函数就是js实现面对对象的一种方式
new关键字的作用
声明了一个空对象
调用了构造函数,使构造函数内部的this指向了实例化对象
使函数的原型对象指向了构造函数
将属性和值赋值给了声明的对象
在函数中默认返回了实例化对象
原型
概念
原型是一个对象,只是对象可以通过原型继承另一个对像的属性和方法
每一个函数声明时,都会自动生成一个对象prototype,prototype通过constructor指针指向了该函数,所以说通过prototype.constructor可以取到该函数
原型链
概念
每个对象都有一个__proto__属性,当我们访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(可以理解为父对象)里找,如果父对象也不存在这个属性,则继续往父对象的__proto__属性所指向的那个对象(可以理解为爷爷对象)里找,如果还没找到,则继续往上找…直到原型链顶端null,这种链条关系就是原型链