JavaScript高级
文章平均质量分 71
JavaScript高级知识
MarxistVive
这个作者很懒,什么都没留下…
展开
-
JSAdvance20-H5 Web Workers(多线程)
JSAdvance20-H5 Web Workers(多线程)文章目录JSAdvance20-H5 Web Workers(多线程)一、H5规范提供了js分线程的实现, 取名为: Web Workers二、相关API三、不足四、练习-计算斐波那契数列一、H5规范提供了js分线程的实现, 取名为: Web Workers二、相关APIWorker: 构造函数, 加载分线程执行的js文件Worker.prototype.onmessage: 用于接收另一个线程的回调函数Worker.prototy原创 2022-05-27 20:32:29 · 119 阅读 · 0 评论 -
JSAdvance19-事件循环模型
JSAdvance19-事件循环模型文章目录JSAdvance19-事件循环模型一、所有代码分类二、js引擎执行代码的基本流程:三、模型的2个重要组成部分:四、模型的运转流程一、所有代码分类初始化执行代码(同步代码): 包含绑定dom事件监听, 设置定时器, 发送ajax请求的代码回调执行代码(异步代码): 处理回调逻辑二、js引擎执行代码的基本流程:初始化代码===>回调代码三、模型的2个重要组成部分:事件(定时器/DOM事件/Ajax)管理模块回调队列四、模型的运转原创 2022-05-26 21:47:41 · 106 阅读 · 0 评论 -
JSAdvance18-JS是单线程的
JSAdvance18-JS是单线程的文章目录JSAdvance18-JS是单线程的一、如何证明js执行是单线程的?二、为什么js要用单线程模式, 而不用多线程模式?三、代码的分类:四、js引擎执行代码的基本流程一、如何证明js执行是单线程的?setTimeout()的回调函数是在主线程执行的定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行二、为什么js要用单线程模式, 而不用多线程模式?JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主原创 2022-05-26 21:44:02 · 112 阅读 · 0 评论 -
JSAdvance17-定时器引发的思考
JSAdvance17-定时器引发的思考文章目录JSAdvance17-定时器引发的思考一、定时器真是定时执行的吗?二、定时器回调函数是在分线程执行的吗?三、定时器是如何实现的?一、定时器真是定时执行的吗?定时器并不能保证真正定时执行一般会延迟一丁点(可以接受), 也有可能延迟很长时间(不能接受)二、定时器回调函数是在分线程执行的吗?在主线程执行的, js是单线程的三、定时器是如何实现的?事件循环模型(后面讲)<!DOCTYPE html><html lan原创 2022-05-26 21:43:32 · 111 阅读 · 0 评论 -
JSAdvance16-浏览器内核
JSAdvance16-浏览器内核什么是浏览器内核?支持浏览器运行的最核心的程序不同的浏览器可能不太一样Chrome, Safari: webkitfirefox: GeckoIE: Trident360,搜狗等国内浏览器: Trident + webkit内核由很多模块组成html,css文档解析模块 : 负责页面文本的解析dom/css模块 : 负责dom/css在内存中的相关处理布局和渲染模块 : 负责页面的布局和效果的绘制布局和渲染模块 : 负责页面的布原创 2022-05-26 21:43:01 · 132 阅读 · 0 评论 -
JSAdvance15-进程与线程
JSAdvance15-进程与线程文章目录JSAdvance15-进程与线程进程:程序的一次执行, 它占有一片独有的内存空间线程: CPU的基本调度单位, 是程序执行的一个完整流程进程与线程一个进程中一般至少有一个运行的线程: 主线程一个进程中也可以同时运行多个线程, 我们会说程序是多线程运行的一个进程内的数据可以供其中的多个线程直接共享多个进程之间的数据是不能直接共享的浏览器运行是单进程还是多进程?有的是单进程firefox老版IE有的是多进程chrome原创 2022-05-26 21:41:30 · 107 阅读 · 0 评论 -
JSAdvance14-继承模式
JSAdvance14-继承模式文章目录JSAdvance14-继承模式一、原型链继承二、借用构造函数继承(假的)三、组合继承一、原型链继承方式1: 原型链继承1. 套路2. 定义父类型构造函数3. 给父类型的原型添加方法4. 定义子类型的构造函数5. 创建父类型的对象赋值给子类型的原型6. 将子类型原型的构造属性设置为子类型7. 给子类型原型添加方法8. 创建子类型的对象: 可以调用父类型的方法2. 关键1. 子类型的原型为父类型的一个实例对象[外链图片转存中…(img-iux原创 2022-05-26 21:40:59 · 105 阅读 · 0 评论 -
JSAdvance13-对象创建模式
JSAdvance13-对象创建模式文章目录JSAdvance13-对象创建模式一、Object构造函数模式二、对象字面量模式三、工厂模式四、自定构造函数模式五、构造函数+原型的组合模式一、Object构造函数模式<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>01_Object构造函数模式</title></head>原创 2022-05-26 21:40:31 · 114 阅读 · 0 评论 -
JSAdvance12-闭包
JSAdvance12-闭包文章目录JSAdvance12-闭包一、引入二、理解闭包2.1 如何产生闭包?2.2 闭包到底是什么?2.3 产生闭包的条件?三、闭包的作用四、闭包的生命周期五、闭包的应用六、内存溢出和内存泄露七、闭包的缺点及解决八、练习一、引入需求: 点击某个按钮, 提示"点击的是第n个按钮"<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <tit原创 2022-05-26 21:39:53 · 116 阅读 · 0 评论 -
JSAdvance11-作用域与作用域链
JSAdvance11-作用域与作用域链文章目录JSAdvance11-作用域与作用域链一、作用域1.1 理解1.2 分类1.3 作用二、作用域与全局上下文2.1 区别13.2 区别23.3 联系三、作用域链3.1 理解3.2 查找一个变量的查找规则四、练习一、作用域1.1 理解就是一块"地盘", 一个代码段所在的区域它是静态的(相对于上下文对象), 在编写代码时就确定了1.2 分类全局作用域函数作用域没有块作用域(ES6有了)1.3 作用隔离变量,不同作用域下同名变量不会有原创 2022-05-26 21:38:41 · 112 阅读 · 0 评论 -
JSAdvance10-执行上下文与执行上下文栈
JSAdvance10-执行上下文与执行上下文栈文章目录JSAdvance10-执行上下文与执行上下文栈一、变量提升与函数提升1.1 变量声明提升1.2 函数声明提升1.3 问题: 变量提升和函数提升是如何产生的?二、执行上下文2.1 代码分类(位置)2.2 全局执行上下文2.3 函数执行上下文2.4 执行上下文栈2.5 练习一、变量提升与函数提升1.1 变量声明提升通过var定义(声明)的变量, 在定义语句之前就可以访问到值: undefined1.2 函数声明提升通过function原创 2022-05-26 21:37:38 · 124 阅读 · 0 评论 -
JSAdvance09-原型与原型链
JSAdvance09-原型与原型链文章目录JSAdvance09-原型与原型链一、原型1.1 函数的prototype属性(图)1.2 给原型对象添加属性(一般都是方法)二、显式原型与隐式原型2.1 每个函数function都有一个prototype,即显式原型(属性)2.2 每个实例对象都有一个\_\_proto\_\_,可称为隐式原型(属性)2.3 对象的隐式原型的值为其对应构造函数的显式原型的值2.4 内存结构(图)2.5 总结:三、原型链3.1 原型链(图解)3.2 构造函数/原型/实体对象的关原创 2022-05-26 21:26:50 · 115 阅读 · 0 评论 -
JSAdvance08-分号问题
JSAdvance08-分号问题文章目录JSAdvance08-分号问题js一条语句的后面可以不加分号是否加分号是编码风格问题, 没有应该不应该,只有你自己喜欢不喜欢在下面2种情况下不加分号会有问题小括号开头的前一条语句中方括号开头的前一条语句解决办法: 在行首加分号强有力的例子: vue.js库vue.js库知乎热议: https://www.zhihu.com/question/20298345<!DOCTYPE html><html lang="e原创 2022-05-25 15:21:46 · 109 阅读 · 0 评论 -
JSAdvance07-函数中的this
JSAdvance07-函数中的this文章目录JSAdvance07-函数中的this一、this是什么?二、如何确定this的值?一、this是什么?任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window所有函数内部都有一个变量this它的值是调用函数的当前对象二、如何确定this的值?test(): windowp.test(): pnew test(): 新创建的对象p.call(obj): obj<!DOCTYPE html><h原创 2022-05-25 15:18:01 · 106 阅读 · 0 评论 -
JSAdvance06-IIFE(立即执行函数)
JSAdvance06-IIFE(立即执行函数)文章目录JSAdvance06-IIFE(立即执行函数)一、理解二、作用一、理解全称: Immediately-Invoked Function Expression二、作用隐藏实现不会污染外部(全局)命名空间用它来编码js模块<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>06原创 2022-05-25 15:17:30 · 92 阅读 · 0 评论 -
JSAdvance05-回调函数
JSAdvance05-回调函数文章目录JSAdvance05-回调函数一、什么函数才是回调函数?二、常见的回调函数?一、什么函数才是回调函数? 1). 你定义的 2). 你没有调 3). 但最终它执行了(在某个时刻或某个条件下)二、常见的回调函数?dom事件回调函数 ==>发生事件的dom元素定时器回调函数 ===>windowajax请求回调函数(后面讲)生命周期回调函数(后面讲)<!DOCTYPE html><html lang="en"原创 2022-05-25 15:16:54 · 106 阅读 · 0 评论 -
JSAdvance04-函数
JSAdvance04-函数文章目录JSAdvance04-函数一、什么是函数?二、为什么要用函数?三、如何定义函数?四、如何调用(执行)函数?一、什么是函数?实现特定功能的n条语句的封装体只有函数是可以执行的, 其它类型的数据不能执行二、为什么要用函数?提高代码复用便于阅读交流三、如何定义函数?函数声明表达式四、如何调用(执行)函数?test(): 直接调用obj.test(): 通过对象调用new test(): new调用test.call/apply(ob原创 2022-05-25 15:16:26 · 116 阅读 · 0 评论 -
JSAdvance03-对象
JSAdvance03-对象文章目录JSAdvance03-对象一、什么是对象?二、为什么要用对象?三、对象的组成四、如何访问对象内部数据?五、什么时候必须使用['属性名']的方式?一、什么是对象?多个数据的封装体用来保存多个数据的容器一个对象代表现实中的一个事物二、为什么要用对象?统一管理多个数据三、对象的组成属性: 属性名(字符串)和属性值(任意)组成方法: 一种特别的属性(属性值是函数)四、如何访问对象内部数据?.属性名: 编码简单, 有时不能用[‘属性名’]:原创 2022-05-25 15:15:39 · 99 阅读 · 0 评论 -
JSAdvance02-数据变量内存
JSAdvance02-数据变量内存文章目录JSAdvance02-数据变量内存一、什么是数据?二、什么是内存?三、什么是变量?四、内存,数据, 变量三者之间的关系五、var a = xxx, a内存中到底保存的是什么?六、关于引用变量赋值问题七、在js调用函数时传递变量参数时, 是值传递还是引用传递八、 JS引擎如何管理内存?一、什么是数据?存储在内存中代表特定信息的’东东’, 本质上是0101…数据的特点: 可传递, 可运算一切皆数据内存中所有操作的目标: 数据算术运算逻辑运算赋值原创 2022-05-25 15:15:06 · 112 阅读 · 0 评论 -
JSAdvance01-数据类型
JSAdvance01-数据类型文章目录JSAdvance01-数据类型一、分类二、判断三、undefined与null的区别?四、什么时候给变量赋值为null呢?五、严格区别变量类型与数据类型?一、分类基本(值)类型String: 任意字符串Number: 任意的数字boolean: true/falseundefined: undefinednull: null对象(引用)类型Object: 任意对象Function: 一种特别的对象(可以执行),普通对象存储的一般是数据原创 2022-05-25 15:14:36 · 156 阅读 · 0 评论