实现简单的new函数

思路:

创建一个空对象,该对象的原型__proto__指向构造函数的原型对象prototype
绑定构造函数的this到该对象(比如bind,这里使用apply()函数,因为需要执行一遍构造函数)并执行,
返回该对象,将其引用赋值给等号左侧。

看代码(自己在网页上手打全文,不保证运行通过):

// 构造函数
const Person = (name, age) => {
	this.name = name;
	this.age = age;
};
// 使用构造函数和_new函数创建实例
const person1 = _new(Person, '张三', 18);

/** 一个简单的new函数 params:
	fn: 构造函数
	x1: 构造函数参数1 (用剩余参数来接收)
	x2: ....
	...
**/
function _new (fn, ...args) {
	let obj = {};
	obj.__proto__ = fn.prototype;
	fn.apply(obj, args); // 这里剩余参数args就是类数组,apply比call方便
	return obj;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值