极简实现系列是用最简单的代码实现一些常见的方法,目的是为了帮助理解原理,所以并没有考虑太多限制条件
这个在面试中经常会碰到,其实很简单,只要理解new运算符做了什么就可以了。去MDN上查找关于new运算符的解释:

四个步骤,我们一步一步来实现,
先做个准备工作,想下我们想实现什么样的效果,是不是这样:
// new 运算符
let man = new Person()
// 自己即将实现的myNew运算符
let women = myNew(Person)好的,接下就按照MDN的说明一步一步实现
1.创建一个空的简单JavaScript对象(即{});
function myNew(fn){
let obj = {}
}2.链接该对象(即设置该对象的构造函数)到另一个对象
function myNew(fn){
let obj = {}
obj.__proto__ = fn.prototype
}3.将步骤1新创建的对象作为this的上下文 ;
function myNew(fn){
let obj = {}
obj.__proto__ = fn.prototype
fn.call(obj)
}4.如果该函数没有返回对象,则返回this
function myNew(fn){
let obj = {}
obj.__proto__ = fn.prototype
let r = fn.call(obj)
return typeof r === 'object' ? r : obj
}完成了我们来测试下

版权声明:本文为laishaojiang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。