new 一个对象的时候发生了什么
1 | function Person(name,age){ |
new一个对象的四个过程
- 创建一个空对象
1
let obj={}
- 让构造函数中的this指向新对象,并指向构造函数的函数体
1
let result = Person.call(obj)
- 设置新对象的__proto__属性指向构造函数的原型对象
1
obj.__proto__=Person.prototype
- 判断构造函数的返回值类型,如果是值类型,则返回新对象,如果是引用类型,就返回这个引用类型的对象
1
2
3
4if(typeof(result)=='Object')
p = result;
else
p = obj