
JavaScript高级
文章平均质量分 80
记录一些有关JavaScript进阶知识
十八岁讨厌编程
没事就喜欢画思维导图
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浏览器本地存储
首先我们可以通过一个场景来理解什么是浏览器的本地存储例如我们打开淘宝搜索psp(不登陆账号的情况下),然后关闭网站之后,我们重新打开淘宝,可以发现在搜索历史里面可以看到psp。为什么会这个样子呢?这里就是网站借助了浏览器的本地存储,将数据存储到了计算机的硬盘上。我们可以借助浏览器的开发者工具查看:同样的我们也可以在浏览器中存储东西!Web 存储 API 提供了 和 两个存储对象来对网页的数据进行添加、删除、修改、查询操作。相应的API及属性:语法:保存数据语法:读取数据语法:删除数据语原创 2022-06-30 14:19:42 · 1314 阅读 · 0 评论 -
函数高级③ -- (执行上下文栈、作用域与作用域链)
文章目录执行上下文栈作用域作用域与执行上下文作用域链执行上下文栈在全局代码执行前, JS引擎就会创建一个栈来存储管理所有的执行上下文对象在全局执行上下文(window)确定后, 将其添加到栈中(压栈)在函数执行上下文创建后, 将其添加到栈中(压栈)在当前函数执行完后,将栈顶的对象移除(出栈)当所有的代码执行完后, 栈中只剩下window例如:<script type="text/javascript"> var a = 10 var bar = function (x原创 2022-04-16 17:17:13 · 375 阅读 · 0 评论 -
函数高级② -- (原型链属性、instance、提升、执行上下文)
文章目录原型链的属性问题instanceof变量提升与函数提升执行上下文原型链的属性问题读取对象的属性值时: 会自动到原型链中查找设置对象的属性值时: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上从以下的例子中可以发现如上的规律: function Fn() { } Fn.prototype.a = 'xxx' var fn1 = new Fn() console.log(fn1.a)原创 2022-04-16 16:24:04 · 721 阅读 · 0 评论 -
函数高级① -- (函数的prototype、原型、原型链)
文章目录函数的prototype显示原型与隐式原型原型链构造函数/原型/实例对象的关系函数的prototype函数的prototype属性每个函数都有一个prototype属性, 它默认指向一个Object空对象(即称为: 原型对象)原型对象中有一个属性constructor, 它指向函数对象也就是说函数与函数的原型对象有一个互相引用的关系给原型对象添加属性(一般都是方法)作用: 函数的所有实例对象自动拥有原型中的属性(方法)证明:<script type="t原创 2022-04-16 11:51:51 · 599 阅读 · 0 评论 -
面向对象高级② --对象的三种继承模式
文章目录原型链继承借用构造函数继承组合继承原型链继承套路定义父类型构造函数给父类型的原型添加方法定义子类型的构造函数创建父类型的对象赋值给子类型的原型将子类型原型的构造属性设置为子类型给子类型原型添加方法创建子类型的对象: 可以调用父类型的方法关键子类型的原型为父类型的一个实例对象例如:<script type="text/javascript"> //父类型 function Supper() { this.supProp = 'Sup原创 2022-04-14 18:35:46 · 384 阅读 · 0 评论 -
面向对象高级① -- 对象的五种创建模式
文章目录对象创建模式Object构造函数模式对象字面量模式工厂模式自定义构造函数模式构造函数+原型的组合模式对象创建模式Object构造函数模式套路: 先创建空Object对象, 再动态添加属性/方法适用场景: 起始时不确定对象内部数据问题: 语句太多例如:<script type="text/javascript"> /* 一个人: name:"Tom", age: 12 */ // 先创建空Object对象 var p = new Object()原创 2022-04-14 17:03:34 · 505 阅读 · 0 评论 -
线程机制与事件机制②
文章目录JS是单线程执行的事件循环模型H5 Web Workers实现多线程JS是单线程执行的我们可以用以下代码证明JS是单线程执行的:<script type="text/javascript"> setTimeout(function () { console.log('timeout 2222') alert('22222222') }, 2000) setTimeout(function () { console.log('timeout 111原创 2022-04-12 17:24:43 · 1169 阅读 · 0 评论 -
线程机制与事件机制①
文章目录进程与线程浏览器内核定时器引发的思考进程与线程进程:程序的一次执行, 它占有一片独有的内存空间。可以通过windows任务管理器查看进程。线程:是进程内的一个独立执行单元,是程序执行的一个完整流程. 是CPU的最小的调度单元例如:注意:应用程序必须运行在某个进程的某个线程上一个进程中至少有一个运行的线程: 主线程, 进程启动后自动创建一个进程中也可以同时运行多个线程, 我们会说程序是多线程运行的一个进程内的数据可以供其中的多个线程直接共享多个进程之间的数据是不能直接共享的原创 2022-04-12 15:53:40 · 473 阅读 · 0 评论 -
内存溢出和内存泄漏
文章目录内存溢出内存泄露内存溢出一种程序运行出现的错误,也就是说遇到这种情况程序是不能运行的。当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误例如:// 1. 内存溢出 var obj = {} for (var i = 0; i < 10000; i++) { obj[i] = new Array(10000000) console.log('-----') }内存泄露内存泄漏是指占用的内存没有及时释放,内存泄露积累多了就容易导致内存溢出,所原创 2022-04-12 11:56:58 · 1069 阅读 · 0 评论 -
JavaScript闭包的应用以及缺点
文章目录闭包的应用 -- 自定义JS模块闭包的缺点以及解决闭包的应用 – 自定义JS模块JS模块的本质就是js文件我们可以将所有的数据和功能都封装在一个函数内部(私有的),只向外暴露一个包含n个方法的对象或函数(一个容器),模块的使用者, 只需要通过模块暴露的对象调用方法来实现对应的功能即可实现一:通过return一个容器来进行暴露。模块:function myModule() { //私有数据 var msg = 'My NEFU' //操作数据的函数 function do原创 2022-04-12 11:28:15 · 1350 阅读 · 0 评论 -
JavaScript闭包
文章目录引入什么是闭包常见的闭包闭包的作用闭包的生命周期引入假设现在我们有一个需求:网页中有三个按钮,我们想要点击一个按钮的时候,网页会显示他是第几个按钮。思路:遍历+ 监听 var btns = document.getElementsByTagName('button') for (var i = 0,length=btns.length; i < length; i++) { var btn = btns[i] btn.onclick = function () {原创 2022-04-12 10:56:04 · 1165 阅读 · 0 评论 -
this和原型对象(prototype)
文章目录this原型对象(prototype)this解析器在调用函数每次都会向函数内部传递进一个隐含的参数,这个隐含的参数就是this,this指向的是一个对象。这个对象我们称为函数执行的 上下文对象,根据函数的调用方式的不同,this会指向不同的对象:以函数的形式调用时,this永远都是window以方法的形式调用时,this就是调用方法的那个对象this可以让我们的程序更加灵活,我们可以模拟一种场景,例如:定义一个方法,在对象调用它时,可以打印出自己的名字。<script typ原创 2022-04-11 17:17:54 · 1116 阅读 · 0 评论 -
JavaScript正则表达式
文章目录什么是正则表达式使用正则表达式正则语法字符串和正则相关的方法什么是正则表达式正则表达式可以用来定义一些字符串的规则,程序可以根据这些规则来判断一个字符串是否符合规则,也可以将一个字符串中符合规则的内容提取出来。例如:我们可以通过正则表达式去判断用户输入的邮箱地址是否正确。使用正则表达式首先创建正则表达式的对象再使用正则表达式的方法①创建正则表达式的对象语法:var 变量 = new RegExp("正则表达式","匹配模式");还有一种字面量创建方法:语法:var 变量原创 2022-04-11 15:19:38 · 1346 阅读 · 0 评论