new 关键字作用
众所周知,js 中 new 关键字的作用就是创建一个构造函数的实例对象
如以下构造函数,使用 new 关键字(注意:构造函数的第一个字母大写,与普通函数区分)
function Person(name, age) {
this.name = name;
this.age = age;
}
let p = new Person('张三', '18');
console.log(p); // Object { name: "张三", age: 18 }
手写 new,分四步骤,直接贴代码
// Fun 为构造函数, args 表示传参
function myNew(Fun, ...args) {
// 1、在内存中创建一个新对象
let obj = {};
// 2 、把新对象的原型指针指向构造函数的原型对象
obj.__proto__ = Fun.prototype;
// 3、利用函数的 call 方法改变 this 指向,并且执行构造函数内部的代码(传参)
let res = Fun.apply(obj, args);
// 4、判断函数执行结果的类型
if (res instanceof Object) {
return res;
} else {
return obj;
}
}
let obj = myNew(newFn, "XiaoMing", "18");
console.log("newObj:", obj);
网友评论