要自己实现一个new功能,实现要知道new操作符都干了些什么,其实总的来说就四步: 1.创建一个空对象 2.链接到原型 3.绑定this值 4.返回新对象 知道了这些步骤,我们就可以自己模拟实现new方法了 function _new () { var obj = new Object(); var [func, ...args] = [...arguments]; obj.__proto__ = func.prototype; var result = func.call(obj,...args); if(result && ( typeof(result) === 'object' || typeof(result) === 'Function')){ return result; } return obj; } function Animal(name,age){ this.name = name; this.age = age; } //通过new创建构造实例 let dog1 = new Animal('dog1',2); console.log(dog1.name) // dog1 console.log(dog1.age)//2 //通过_new方法创造实例 let dog2 = _new(Animal,'dog2',3); console.log(dog2.name)//dog2 console.log(dog2.age) //3