欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。
🌟 一句话核心: new 就是「造一个对象,并让构造函数为它打工」的过程。
// 🔹 Step 1: 批地 + 挂招牌
const obj = Object.create(Car.prototype);
// obj = { __proto__: Car.prototype }
// 🔹 Step 2+3: 派店长入驻装修
Car.apply(obj, ['Tesla']);
// → 执行后 obj 变成:
// {
// brand: 'Tesla',
// start: [Function],
// __proto__: Car.prototype
// }
// 🔹 Step 4: 店长没说“换地方”,就用这块地
// Car 没 return → 返回 obj
//关键转折:当构造函数 显式 return 时!
function Car(brand) {
this.brand = brand;
// 👇 店长说:“别开店了,我直接给你一栋现成商场!”
return { brand: 'BMW', type: 'Electric' };
}
const myCar = new Car('Tesla');
console.log(myCar);
// { brand: 'BMW', type: 'Electric' } ← 不是 Tesla!也没 start 方法!
function _new(Fn, ...arg) {
const obj = Object.create(Fn.prototype);
const obj1 = Fn.apply(obj, arg);
return obj1 instanceof Object ? obj1 : obj;
}