1、普通函数执行机制:
/**
1、形成一个私有的作用域;
2、形参赋值;
3、变量提升;
4、代码执行;
5、栈内存释放问题;
*/
2、构造函数执行机制:
function Fn (name, age) {
var n = 10;
this.name = name;
this.age = age + n;
}
var f = new Fn();
/**
1、和普通函数相同,形成一个私有作用域;
2、形参赋值;
3、变量提升;
4、构造函数独有:在JS代码执行之前,首先在当前形成的私有栈中创建一个对象(AAAFFF000)(一个堆内存,暂时不存储任何的东西);
并且让函数的执行主体(this)指向这个新的堆内存(this === AAAFFF000);
5、代码自上而下执行;
6、构造函数独有:代码执行完成,把之前创建的堆内存地址返回(浏览器默认返回);
*/
/**
1、开始创建的对象(AAAFFF000)其实就是Fn这个类的一个实例,我们让this指向这个实例,代码执行中的 this.xxx = xxx 都是
给这个实例设置 “私有属性”,最后浏览器会把默认创建的实例返回,供外面接收。
2、再次执行 new Fn(),就是把上面的操作重新执行一遍,会形成新的实例(新的内存空间),所以说实例是独立分开的;
*/
构造函数执行机制.png
网友评论