javascript new 做了什么?
最近更新:2024-12-02
|
字数总计:396
|
阅读估时:1分钟
|
阅读量:次
- new 做了什么?
new 做了什么?
经常使用 new
1 2 3 4 5 6 7 8 9
| function Person(name, sex) { this.name = name; this.sex = sex; } const person = new Person('tommy', 'male'); console.log(person.name);
new Array(); new Date();
|
那么 new 关键字做了什么 ?
- 创建一个空对象:使用 new 关键字创建一个新的空对象,该对象将成为实例化的对象。
- 设置原型链连接:将新创建的对象的原型链接到构造函数的原型对象(Constructor.prototype)上。这样,实例对象就可以访问构造函数原型对象上定义的属性和方法。
- 绑定 this 上下文:将构造函数的 this 上下文绑定到新创建的对象上,使构造函数内部的代码可以访问和操作新对象。
- 执行构造函数代码:执行构造函数的代码块,将属性和方法添加到新创建的对象上。在构造函数中可以使用 this 关键字引用新对象,并对其进行初始化。
- 返回新对象:如果构造函数没有显式返回其他对象,那么 new 表达式将隐式返回新创建的对象实例。这样,通过 new 创建的对象就可以在代码中使用,并引用该实例。
按照这个逻辑,我们自己写一个函数。
1 2 3 4 5 6 7 8 9 10 11
| function _new(func, ...params) { const obj = Object.create(func.prototype); const result = func.apply(obj, params); const o = result || obj; return o; }
|
这样也就说明了原理。