new
运算符 创建 一个用户定义的 对象类型 的实例或 具有构造函数的内置对象 的实例。
完整的了解 new
运算符你可能还需要了解一下 面向对象思想 以及 原型链,可以简单查看这篇笔记 👉 原型链! __proto__ 与 prototype
如果快速的了解 new
关键字按照MDN的文档描述来说就是:
new
关键字会创建一个空的简单JavaScript对象(即{}
);- 链接该对象(设置该对象的
constructor
)到另一个对象 (绑定原型); - 将 步骤1 新创建的对象作为
this
的上下文 ; - 如果该函数没有返回对象,则返回
this
。
可以简单理解成 new
关键字帮我们处理了书写构造函数时一些固定的步骤
- 创建临时对象;
- 绑定原型;
return
这个临时对象
整个遍写构造函数的过程中,可以省略上面的步骤,直接使用 this
就可以指向这个临时对象,为他创建属性,
直接为 prototype
赋值属性和方法就可以对公共(对象原型)增加属性、方法。
未完成
尾声
ES6 为 new
引入了一个 new.target
属性,可以用来确定构造函数是怎么调用的。
附
new 运算符 - JavaScript | MDN
Object.prototype.constructor - JavaScript | MDN
JS 的 new 到底是干什么的? - 知乎
§ 6.new.target 属性 - Class 的基本语法 - ECMAScript 6入门