在JS中常用new关键字来调用构造函数,创建对象。那么new之后执行了哪些操作:
var obj = new Fn();
1、var obj = {};
在堆空间中开辟一块区域,存放空对象、空数组等;
2、obj.proto = Fn.prototype;
将空对象的原型指向new对象的构造函数;(设置原型链)
3、Fn.call(obj);
让Fn的this指向obj,并执行Fn的函数体。
温馨提示:
堆内存是用来存放由new创建的对象和数组,即动态申请的内存都存放在堆内存;
栈内存是用来存放在函数中定义的一些基本类型的变量和对象的引用变量;