function mynew(func,...args){
if(typeof func !== 'function') return;
//1.首先,创建一个空对象,且继承构造函数的原型对象
let obj = Object.create(func.prototype)
//2.构造函数被执行,this指针指向上面创建的空对象
let result = func.apply(obj,args)
//3.如果执行结果返回的是一个对象或者函数,则返回执行结果,否则返回第一步空对象
let isObject = typeof result === "object" && result !== null
let isFuntion = typeof result === 'function'
return isObject || isFunction ? result : obj
}
js new运算法的内部实现
原创
©著作权归作者所有:来自51CTO博客作者StavinLi的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
new thread 、 new stack和New Object的形象说明
e2 studio的使用
堆栈 Stack 网络协议栈 -
蝶形运算法
具体来说,蝶形运算法采用递归方式进行计算,每次将长度为N的DFT分解为两个长度为N/2的DFT计算,然后再将其合并为一
算法 递归 图像处理 时间复杂度 -
js运算法则(相等不相等)
js运算法则1.大小比较(涉及转型 及 编码)在比较两个字符串型的
javascript js 字符串 类型转换 数据 -
点运算法 点运算符
在看着篇文章之前我们先来了解一下运算符的表,如有不理解,请看大致解析 目录算术运算符 位运算符 按位运算符 & ^ | 按位运算符逻辑运算符 &&和&n
点运算法 操作符 运算符 操作数 位运算符