new一个对象的时候发生了什么?

function Person(name, age) {
  this.name = name;
  this.age = age;
}
let p = new Person("Alice", 23);
new一个对象的四个过程:

1、创建一个空对象

let obj = {};

2、让构造函数中的this指向新对象,并执行构造函数的函数体

let result = Person.call(obj);

3、设置新对象的proto属性指向构造函数的原型对象

obj.__proto__ = Person.prototype;

4、判断构造函数的返回值类型,如果是值类型,则返回新对象。如果是引用类型,就返回这个引用类型的对象。

if (typeof(result) == "object") 
    p = result;
else 
    p = obj;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。