1.new的原理是什么?
看这里
2.new创建对象和字面量创建本质上是一样的,字面量的方式比较简单,也不用调用构造函数,性能较好
3.自己模拟new的操作
先定义一个构造函数
function Person(type) {
this.type = type;
// return 10;//Primitive value returned from constructor will be lost when called with 'new'
// return {age:20};
}
/**
* mockNew(构造器,构造器参数)
*/
function mockNew(constructor, ...args){
let obj = {};
obj.__proto__ = constructor.prototype;
let res = constructor.apply(obj,args);
return res instanceof Object ? res : obj;
}
以下两种方式创建对象都是阔以的
let p = new Person('哺乳类');
console.log(p);
let p = mockNew(Person,'学生');
console.log(p);