JavaScript - 关于面向对象的一些基本概念知识图文总结

139 阅读2分钟

这是我参与8月更文挑战的第17天,活动详情查看:8月更文挑战

关于构造函数和普通函数底层运行原理的对比

  • 普通函数
  • 普通执行时形成一个独立的私有上下文;在私有上下文中有用于保存私有变量的活动对象AO
  • 初始化作用域链
  • 初始化this
  • 初始化arguments
  • 形参赋值
  • 变量提升
  • 代码执行
  • 返回值:return啥就是啥
  • 构造函数执行
  • 构造函数执行时同样也是先形成一个独立的私有上下文;在私有上下文中有用于保存私有变量的活动对象AO
  • ==与普通函数不同的是:构造函数在形成私有上下文后,浏览器会默认创建一个实例对象(当前构造函数的实例)==
  • 初始化this,==并让this指向上一步中创建好的实例对象==
  • 初始化arguments
  • 形参赋值
  • 变量提升
  • 代码执行
  • 函数返回值:
    • ==如果没有返回值或返回值是一个基本类型值,则浏览器会忽略其返回值而是把创建的实例对象作为返回值返回==
    • ==如果返回值是一个引用类型值,则浏览器会把这个引用类型值作为返回值返回==

在这里插入图片描述

关于构new造函数加括号和不加括号的对比

  • new Fn VS new Fn()
  • 相同点:两种方式都是把函数Fn执行
  • 不同点:
    • new Fn 没有传递实参; 并且运算符优先级是18
    • new Fn():可以传递实参;并且运算符优先级是19

关于获取对象属性的一些总结

在这里插入图片描述

检测对象的成员是一个公有属性

在这里插入图片描述

关于对象中的原型和原型链的一些细节知识

在这里插入图片描述

函数的多种角色

在这里插入图片描述 在这里插入图片描述