小白学前端js高级-04

70 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

自学前端

  • 前文
    • 本文是我自学js的一些知识以及个人理解, 希望帮助到一些想要学习前端的小白朋友
    • 介绍本次学习的是js高级相关知识
    • 这是基于我学习的笔记而来的文章
    • backend: 后端 frontend: 前端

原型链

  1. 原型链(图解)
    • 访问一个对象的属性时,
      • 先在自身属性中查找,找到后返回
      • 如果没有, 再沿着__proto_这条链向上查找, 找到返回
      • 如果最终没找到返回undefined
    • 别名隐式原型链
    • 作用: 查找对象的属性(方法)
  2. 构造函数/原型/实体对象的关系(图解)
  3. 构造函数/原型/实体对象的关系2(图解)
  4. 函数的显示原型链指向的对象默认是空的Object实例对象(但是Object不满足)
  5. 所有函数都是Function的实例(包含Function)
  6. Object的原型对象是原型链的尽头

原型链_属性问题

  1. 读取对象的属性值时: 会自动到原型链中查找
  2. 设置对象的属性值: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值
  3. 方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上

instanceof

  1. instanceof 是如何判断的?
    • 表达式: A instanceof B
    • 如果B函数的显示原型对象在A对象的原型链上, 返回true, 否则返回false
  2. Function是通过new自己产生的实例

变量提升与函数提升

  1. 变量声明提升
    • 通过var定义(声明)的变量, 在定义语句之前就可以访问到
    • 值: undefined
  2. 函数声明提升
    • 通过function声明的函数, 在之前就可以直接调用
    • 值: 函数定义(对象)
  3. 问题: 变量提升和函数提升是如何产生的
  4. 全局执行上下文

全局执行上下文.png

执行上下文栈

  1. 在全局代码执行前, JS引擎就会创建一个栈来存储管理所有的执行上下文对象
  2. 在全局执行上下文(window)确定后, 将其添加到栈中(压栈)
  3. 在函数执行上下文创建后, 将其添加到栈中(压栈)
  4. 在当前函数执行完后, 将栈顶的对象移出(出栈)
  5. 当所有的代码执行完后, 栈中只剩下window

后记

  • 希望对对前端有兴趣的朋友们有帮助
  • 这篇文章主要是关于js高级的, 希望大家喜欢
  • js的作者是美国人布兰登·艾奇, 非常厉害的人