//创建用户类
class User {
//对于写个给太麻烦了
// constructor(firstName,lastName,age) {
// this.firstName=firstName;
// this.lastName=lastName;
// this.age=age;
// }
}
/**
* 直接对构造函数进行代理
* @param Class 对象
* @param propNames 对应构造函数的参数
* @returns {any}
* @constructor
*/
function ConstructorProxy(Class, ...propNames) {
return new Proxy(Class, {
construct(target, argumentsList) {
const obj = Reflect.construct(target, argumentsList)
propNames.forEach((name, i) => {
obj[name] = argumentsList[i];
})
return obj;
}
})
}
const UserProxy = ConstructorProxy(User, "firstName", "lastName", "age")
console.log(UserProxy)
const obj = new UserProxy("w", "q", 18);
console.log(obj)
//创建Monster类
class Monster {
}
const MonsterProxy = ConstructorProxy(Monster, "attack", "defence", "hp", "rate", "name")
const m = new MonsterProxy(10, 20, 100, 30, "怪物")
console.log(m);