JS:函数执行机制

一、普通函数执行

  1. 形成一个私有的作用域
  2. 形参赋值
  3. 变量提升,函数声明
  4. 代码执行
  5. 栈内存释放与否

二、构造函数执行

1、像普通函数一样形成一个私有作用域(栈内存)

  • 形参赋值
  • 变量提升 (私有变量)

2、【构造函数执行独有】在js代码自上而下执行之前,首先在当前形成的私有栈中创建一个对象(创建一个堆内存,暂时不存储任何东西),并且让函数中的执行主体(this)指向这个新的堆内存(this===创建的对象)

3、代码自上而下执行

4、【构造函数执行独有】代码执行完成,把之前创建的堆内存地址返回(浏览器默认返回)

 

this.xx=xx  都是给实例设置私有属性,只有它才和实例有关系,其他都是私有变量or全局变量

5.构造函数执行,不写return 浏览器会默认返回创建的实例,如果写return

  •    return基本值,依然返回实例,不受影响。
  •    return引用值:{name:“xxx”},则会把实例覆盖返回。
  • 单加一个return,不会影响,表示代码结束。

6.   

      in:检测对象是否有某属性

      hasOwnProperty:检测当前属性是否是对象的私有属性

      hasPubProperty:检测当前属性是否是对象的公有属性

      instanceof:对象是否是特定类的一个实例

 

 

 

你可能感兴趣的:(js)