多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
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; } ~~~