×

JS知识系列:new的原理是什么

作者:abc1232019.04.24来源:Web前端之家浏览:10445评论:0
关键词:jsnew

new的原理是什么?通过new的方式创建对象和通过字面量创建有什么区别?

new:

创建一个新对象。

这个新对象会被执行[[原型]]连接。

将构造函数的作用域赋值给新对象,即this指向这个新对象.

如果函数没有返回其他对象,那么new表达式中的函数调用会自动返回这个新对象。

function new(func) {
    let target = {};
    target.__proto__ = func.prototype;
    let res = func.call(target);
    if (typeof(res) == "object" || typeof(res) == "function") {
    	return res;
    }
    return target;
}

字面量创建对象,不会调用 Object构造函数, 简洁且性能更好;

new Object() 方式创建对象本质上是方法调用,涉及到在proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的 堆栈信息,方法调用结束后,还要释放该堆栈,性能不如字面量的方式。

通过对象字面量定义对象时,不会调用Object构造函数。

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/js28340283488.html

网友评论文明上网理性发言 已有0人参与

发表评论: