//模拟new的实现function Animal(type) { this.type = type //实例上的属性 //如果当前构造函数返回的是一个引用类型,需要把这个对象返回 //return {name: 'jeffywin'}}Animal.prototype.say = function() { //原型上添加公共属性和方法 console.log('say')}//let animal = new Animal('爬行动物') function newMy(){ let Constructor = [].shift.call(arguments)//剩余的arguments就是其他参数 let obj = {} obj.__proto__ = Constructor.prototype let r = Constructor.apply(obj,arguments) return r instanceof Object ? r : obj }let animal = newMy(Animal,'爬行动物') animal.say()复制代码