持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
自学前端
- 前文
- 本文是我自学js的一些知识以及个人理解, 希望帮助到一些想要学习前端的小白朋友
- 介绍本次学习的是js高级相关知识
- 这是基于我学习的笔记而来的文章
- backend: 后端 frontend: 前端
原型链
- 原型链(图解)
- 访问一个对象的属性时,
- 先在自身属性中查找,找到后返回
- 如果没有, 再沿着__proto_这条链向上查找, 找到返回
- 如果最终没找到返回undefined
- 别名隐式原型链
- 作用: 查找对象的属性(方法)
- 访问一个对象的属性时,
- 构造函数/原型/实体对象的关系(图解)
- 构造函数/原型/实体对象的关系2(图解)
- 函数的显示原型链指向的对象默认是空的Object实例对象(但是Object不满足)
- 所有函数都是Function的实例(包含Function)
- Object的原型对象是原型链的尽头
原型链_属性问题
- 读取对象的属性值时: 会自动到原型链中查找
- 设置对象的属性值: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值
- 方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上
instanceof
- instanceof 是如何判断的?
- 表达式: A instanceof B
- 如果B函数的显示原型对象在A对象的原型链上, 返回true, 否则返回false
- Function是通过new自己产生的实例
变量提升与函数提升
- 变量声明提升
- 通过var定义(声明)的变量, 在定义语句之前就可以访问到
- 值: undefined
- 函数声明提升
- 通过function声明的函数, 在之前就可以直接调用
- 值: 函数定义(对象)
- 问题: 变量提升和函数提升是如何产生的
- 全局执行上下文
执行上下文栈
- 在全局代码执行前, JS引擎就会创建一个栈来存储管理所有的执行上下文对象
- 在全局执行上下文(window)确定后, 将其添加到栈中(压栈)
- 在函数执行上下文创建后, 将其添加到栈中(压栈)
- 在当前函数执行完后, 将栈顶的对象移出(出栈)
- 当所有的代码执行完后, 栈中只剩下window
后记
- 希望对对前端有兴趣的朋友们有帮助
- 这篇文章主要是关于js高级的, 希望大家喜欢
- js的作者是美国人布兰登·艾奇, 非常厉害的人