function fn(name, age) { this.name = name; this.age = age + n; } var f = new fn("xxx", 18);
构造函数简单的运行机制分为四个部分
第一步 => 首先形成一个私有的作用域(栈内存)
第二步 => (构造函数独有) 在js代码自上而下执行之前,首先在当前形成的私有栈中创建一个对象(创建一个堆内存:暂时不存储任何东西),并且让函数中的执行主体(this)执行那个这个新的堆内存(this==创建的对象)
第三步 => 代码自上而下执行
第四步 => (构造函数独有) 代码执行完成,把之前创建的堆内存地址返回(浏览器默认返回)
注意:构造函数执行,不写 return ,浏览器会默认返回创建的实例,但是如果写 return
1、 return一个基本类型值。返回的结果依然是类的实例,没有受到影响
2、 return一个引用值,则会把默认返回的实例覆盖,此时接收到的结果就不再是那个实例了
构造函数执行的时候,尽量减少 return的使用,防止覆盖实例