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

2023-06-13,,

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

在调用 new 的过程中会发生四件事情

    新生成了一个对象;
    链接到原型;
    绑定 this ;
    返回新对象。

根据以上四个过程,我们也可以试着来自己实现一个 new

创建一个空对象,
获取构造函数,
设置空对象的原型,
绑定 this 并执行构造函数,
确保返回值为对象。

function create() {
let obj = {}
let Con = [].shift.call(arguments)
obj.__proto__ = Con.prototype
let result = Con.apply(obj, arguments)
return result instanceof Object ? result : obj
}

对于对象来说,其实都是通过 new 产生的,无论是 function Foo() 还是 let a = { b : 1 } 。
对于创建一个对象来说,更推荐使用字面量的方式创建对象(无论性能上还是可读性)。 因为你使用 new Object() 的方式创建对象需要通过作用域链一层层找到 Object ,但是你使用字面量的方式就没这个问题。

function Foo() {}
// function 就是个语法糖
// 内部等同于 new Function()
let a = { b: 1 }
// 这个字面量内部也是使用了 new Object()

new 的原理是什么?通过 new 的方式创建对象和通过字面量 创建有什么区别?的相关教程结束。

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

下载本文的Word格式文档,以方便收藏与打印。