ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
1. 创建一个空对象 2. 改变原型的指向(obj.setprototype(obj,xx.prototype)) 3. 改变this指向 ~~~js /* create函数要接受不定量的参数,第一个参数是构造函数(也就是new操作符的目标函数),其余参数被构造函数使用。 new Create() 是一种js语法糖。我们可以用函数调用的方式模拟实现 */ function create(Con,...args){ //1、创建一个空的对象 let obj = {}; // let obj = Object.create({}); //2、将空对象的原型prototype指向构造函数的原型 Object.setPrototypeOf(obj,Con.prototype); // obj.__proto__ = Con.prototype //3、改变构造函数的上下文(this),并将剩余的参数传入 let result = Con.apply(obj,args); //4、在构造函数有返回值的情况进行判断 return result instanceof Object?result:obj; } ~~~