一、普通函数执行
- 形成一个私有的作用域
- 形参赋值
- 变量提升
- 代码执行
- 栈内存释放与否
二、构造函数执行
1、像普通函数一样形成一个私有作用域(栈内存)
- 形参赋值
- 变量提升 (私有变量)
2、【构造函数执行独有】在js代码自上而下执行之前,首先在当前形成的私有栈中创建一个对象(创建一个堆内存,暂时不存储任何东西),并且让函数中的执行主体(this)指向这个新的堆内存(this===创建的对象)
3、代码自上而下执行
4、【构造函数执行独有】代码执行完成,把之前创建的堆内存地址返回(浏览器默认返回)
this.xx=xx 都是给实例设置私有属性,只有它才和实例有关系,其他都是私有变量or全局变量
5.构造函数执行,不写return 浏览器会默认返回创建的实例,如果写return
- return基本值,依然返回实例,不受影响。
- return引用值:{name:“xxx”},则会把实例覆盖返回。
- 单加一个return,不会影响,表示代码结束。
6.
in:检测对象是否有某属性
hasOwnProperty:检测当前属性是否是对象的私有属性
hasPubProperty:检测当前属性是否是对象的公有属性
扫描二维码关注公众号,回复:
5415591 查看本文章
instanceof:对象是否是特定类的一个实例