步骤用new Object() 的方式新建了一个对象 obj取出第一个参数,就是我们要传入的构造函数。此外因为 shift 会修改原数组,所以 arguments 会被去除第一个参数将 obj 的原型指向构造函数,这样 obj 就可以访问到构造函数原型中的属性使用 apply,改变构造函数 this 的指向到新建的对象,这样 obj 就可以访问到构造函数中的属性返回 obj代码<!DOCTYPE html><html lang=“en”><head> <meta charset=“UTF-8”> <meta name=“viewport” content=“width=device-width, initial-scale=1.0”> <meta http-equiv=“X-UA-Compatible” content=“ie=edge”> <title>Document</title></head><body> <script> function Person(name, age) { this.name = name; this.age = age; this.say = function() { alert(this.name) } } var p1 = new Person(‘jie’, 12) p1.say() function create() { let obj = new Object(); let Con = [].shift.call(arguments) obj.proto = Con.prototype; let ret = Con.apply(obj, arguments) return ret instanceof Object ? ret : obj } var p2 = create(Person, ‘biao’, 22) p2.say() </script></body></html>注意写错的地方