new操作符是什么
new操作符一般放置于构造函数前面,用来创建一个基于该构造函数的实例。它的本质其实就是基于原型链的继承
在js中并不具备’类‘的概念,ES6 中的 class 属于一种语法糖,能够让开发者更好理解
在这里呢,我们创建的函数及内置的函数都可以叫做构造函数
我们在实际开发中呢,经常使用字面量来定义这些构造函数,对于自定义函数我们也可以通过new操作符来为其创建实例
当一个普通函数作为构造函数时,其首字母需要大写,虽说这只是一种写法上的约定,就算你使用小写也没错,但并不推荐这么做,毕竟按照规范来做总没错
所以说白了,new 操作符的本质,仍属于基于原型的继承行为。新建的实例拥有其构造函数原型上的所有属性和方法
继承和原型
继承很好理解,其基本的目的,就是完成功能的复用,它包含 经典继承/混合继承 /组合式继承 。一般来讲,继承指的是面向对象的继承,在 JS 中,是没有类这个概念的,那么我们就需要来思考一些别的方法来进行继承了
一、
当B构造函数继承A构造函数的时候,
在B构造函数中 借用父构造函数继承父构造函数的属性 代码:A.call(this,参数)
二、
通过 B构造函数的.prototype.方法名=A构造函数.prototype.方法名 来继承原型上的方法
而原型 也就是prototype 只有函数才会拥有此属性,它指向函数的原型对象
JS 中的所有对象一定都有一个原型,并且继承了来自原型的所有属性和方法,而对象找到这个原型的路径就是 obj.__proto__,但需要知道的是,不是所有的对象都会有 prototype 属性,只有函数才有