我的前端学习笔记📒
最近花了点时间把笔记整理到语雀上
了,方便童鞋们阅读
new
new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例
new 操作符会做什么操作❓
new
操作符做了这些事:
- 它创建了一个全新的对象。
- 它会被执行
[[Prototype]]
(也就是__proto__
)链接。 - 它使
this
指向新创建的对象,也就是new操作会改变this指向
- 通过
new
创建的每个对象将最终被[[Prototype]]
链接到这个函数的prototype
对象上。 - 如果函数没有返回对象类型
Object
(包含Functoin,Array,Date,RegExg,Error
),那么new
表达式中的函数调用将返回该对象引用。
那么我们用函数来模拟new操作符的实现吧
如何调用
const obj=New(Constructor)
实现
function New() {
var obj = new Object(),
Constructor = [].shift.call(arguments); // 为什么是这样因为调用 const obj=New(Constructor)
obj.__proto__ = Constructor.prototype;
var ret = Constructor.apply(obj, arguments); // arguments类数组为引用类型
return (typeof ret === "object" || typeof ret === "function") && ret !== null ? ret : obj;
};
我的前端学习笔记📒
最近花了点时间把笔记整理到语雀上
了,方便童鞋们阅读