new的本质:
1.在内存中创建一个新的空对象
2.让this指向这个新的对象
3.执行构造函数里面的代码,给这个新的对象添加属性和方法
4.返回这个新的对象(所以构造函数里面不需要return)
如果构造函数内部有return语句,而且return后面跟着一个对象, new 命令会返回 return
语句指定的对象;否则,就会不管 return 语句,返回 this 对象
function myNew(func){
//声明一个中间对象,该对象为最终返回的实例
var obj = {
}
//将实例的原型指向构造函数的原型
obj.__proto__ = func.prototype