![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaScript 高级
文章平均质量分 78
JavaScript 高级
ximingx
真正的力量永远不会属于天生就强壮过人、敏捷过人、聪明过人的家伙,绝不……它只会属于不惜一切达成目的的人
展开
-
JavaScript高级 XHR - Fetch
AJAX(异步的JavaScript和XML)是一种实现 无页面刷新 获取服务器数据的技术,AJAX最吸引人的就是它的“异步”特性,也就是说它可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面,通过他开始前后端分离的开发模式。在网络请求的过程中,为了避免过长的时间服务器无法返回数据,通常我们会为请求设置一个超时时间:timeout,当达到超时时间后依然没有获取到数据,那么这个请求会自动被取消掉,默认值为0,表示没有设置超时时间。比如在准备下载一个文件前,先获取文件的大小,再决定是否进行下载;原创 2023-03-04 15:43:27 · 874 阅读 · 0 评论 -
JavaScript高级 事件总线
【代码】JavaScript高级 事件总线。原创 2023-03-03 18:55:08 · 249 阅读 · 2 评论 -
JavaScript高级 节流 防抖
GitHub网站:https://github.com/jashkenas/underscore。Underscore的官网: https://underscorejs.org/如果这个事件会被频繁触发,那么节流函数会按照一定的频率来执行函数。当事件触发时,相应的函数并不会立即触发,而是会等待一定的时间。不管在这个中间有多少次触发这个事件,执行函数的频繁总是固定的。只有等待了一段时间也没有事件触发,才会真正的执行响应函数。当事件密集触发时,函数的触发会被频繁的推迟。当事件触发时,会执行这个事件的响应函数。原创 2023-03-03 09:23:37 · 107 阅读 · 0 评论 -
JavaScript高级 浏览器WebStorage
WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式:localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页重新打开时,存储的内容依然保留;sessionStorage:会话存储,提供的是本次会话的存储,在关闭掉会话时,存储的内容会被清除;原创 2023-03-02 13:16:10 · 2035 阅读 · 0 评论 -
JavaScript高级 async await 事件循环
所以真正耗时的操作,实际上并不是由JavaScript线程在执行的,浏览器的每个进程是多线程的,那么其他线程可以来完成这个耗时的操作,比如网络请求、定时器,我们只需要在特性的时候执行应该有的回调即可。2.在执行任何一个宏任务之前(不是队列,是一个宏任务),都会先查看微任务队列中是否有任务需要执行,也就是宏任务执行之前,必须保证微任务队列是空的,如果不为空,那么就优先执行微任务队列中的任务(回调)stack:整个Error的错误信息,包括函数的调用栈,当我们直接打印Error对象时,打印的就是stack;原创 2023-03-02 12:55:24 · 2661 阅读 · 0 评论 -
JavaScript高级 Iterator Generator
在面向对象开发中,我们可以通过class定义一个自己的类,这个类可以创建很多的对象,如果我们也希望自己的类创建出来的对象默认是可迭代的,那么在设计类的时候我们就可以添加上 @@iterator 方法;// 实例方法} else {原创 2023-02-25 19:32:33 · 560 阅读 · 0 评论 -
JavaScript高级 Proxy Reflect
在ES6中,新增了一个Proxy类,这个类从名字就可以看出来,是用于帮助我们创建一个代理的,也就是说,如果我们希望监听一个对象的相关操作,那么我们可以先创建一个代理对象(Proxy对象),之后对该对象的所有操作,都通过代理对象来完成,代理对象可以监听我们想要对原对象进行哪些操作。Reflect也是ES6新增的一个API,它是一个对象,字面的意思是反射,它主要提供了很多操作JavaScript对象的方法,有点像Object中操作对象的方法。有一个对象,我们希望监听这个对象中的属性被设置或获取的过程。原创 2023-02-24 18:55:50 · 587 阅读 · 0 评论 -
JavaScript高级 正则表达式
正则表达式简介定义:正则表达式用于定义一些字符串的规则。作用:计算机可以根据正则表达式,来检查一个字符串是否符合指定的规则;或者将字符串中符合规则的内容提取出来。创建正则表达式的对象方式一:使用构造函数创建正则表达式的对象语法: var 变量 = new RegExp("正则表达式"); // 注意,参数是字符串 var 变量 = new RegExp("正则表达式", "匹配模式"); // 注意,两个参数都是字符串备注:RegExp的意思是 Regular expression。使用原创 2022-03-10 12:40:01 · 500 阅读 · 3 评论 -
JavaScript高级 Symbol
Symbol概述背景:ES5中对象的属性名都是字符串,容易造成重名,污染环境。概念:ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型,前六种是:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。特点:Symbol属性对应的值是唯一的,解决命名冲突问题Symbol值不能与其他数据进行计算,包括同字符串拼串for in、for of 遍历时不会遍历原创 2022-03-13 14:21:57 · 544 阅读 · 0 评论 -
JavaScript高级 Objeact的属性和操作
对象的基本操作创建对象使用 new 关键字调用的函数,是构造函数 constructor。构造函数是专门用来创建对象的函数。例如:var obj = new Object();记住,使用typeof检查一个对象时,会返回object。关于常见对象的更多方式,可以看上一篇文章《对象的创建&构造函数》。向对象中添加属性在对象中保存的值称为属性。向对象添加属性的语法:对象.属性名 = 属性值;举例:var obj = new Object();//向obj中添加一个name原创 2022-03-09 07:51:09 · 533 阅读 · 0 评论 -
JavaScript高级 浅拷贝 深拷贝
概念浅拷贝:只拷贝最外面一层的数据;更深层次的对象,只拷贝引用。深拷贝:拷贝多层数据;每一层级别的数据都会拷贝。总结:浅拷贝的时候如果数据是基本数据类型,那么就如同直接赋值那种,会拷贝其本身,如果除了基本数据类型之外还有一层对象,那么对于浅拷贝而言就只能拷贝其引用,对象的改变会反应到拷贝对象上;但是深拷贝就会拷贝多层,即使是嵌套了对象,也会都拷贝出来。拷贝引用的时候,是属于传址,而非传值。深拷贝会把对象里所有的数据重新复制到新的内存空间,是最彻底的拷贝。浅拷贝的实现方式用 for原创 2022-03-09 09:24:55 · 134 阅读 · 0 评论 -
JavaScript高级 Data
const date = new Date();Data() 对象的学习原创 2021-12-05 19:22:20 · 816 阅读 · 0 评论 -
JavaScript高级 Math
JavaScript Math对象原创 2021-12-05 17:44:46 · 607 阅读 · 0 评论 -
javascript高级 String
字符串的定义常规方法 “” ‘’ `` 都可以// 一: 以使用一对单引号或者一对双引号来定义一个字符串let str1 = "str1"console.log(str1) // str1let str2 = 'str2'console.log(str2) // str2// 1. 在 JavaScript 中双引号定义的字符串和单引号定义的字符串没有本质区别// 2. 无论是单引号还是双引号,都必须配对使用,不能一个单引号和双引号配对let str3 = "str3'"console.原创 2021-11-17 23:58:49 · 682 阅读 · 0 评论 -
JavaScript高级 Array
JavaScript 数组原创 2021-11-11 21:38:36 · 1111 阅读 · 0 评论 -
JavaScript高级 Promise
JavaScript Promise原创 2021-11-15 20:20:20 · 662 阅读 · 0 评论 -
JavaScript高级 ES7-ES13 新特性
in来遍历对象类型,但是并没有被ECMA标准化,在ES11中,对其进行了标准化,for…某些字符串我们需要对其进行前后的填充,来实现某种格式化效果,ES8中增加了 padStart 和 padEnd 方法,分别是对字符串的首尾进行填充的。在ES7中,我们可以通过includes来判断一个数组中是否包含一个指定的元素,根据情况,如果包含则返回 true,否则返回false。flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。原创 2023-01-30 15:50:31 · 2583 阅读 · 0 评论 -
JavaScript高级 ES6新特性
let、const和var的另一个重要区别是作用域提升, 我们知道var声明的变量是会进行作用域提升的,但是如果我们使用let声明的变量,在声明之前访问会报错, 这些变量会被创建在包含他们的词法环境被实例化时,但是是不可以访问它们的,直到词法绑定被求值。从直观的角度来说,let和var是没有太大的区别的,都是用于声明一个变量,const 它表示保存的数据一旦被赋值,就不能被修改,但是如果赋值的是引用类型,那么可以通过引用找到对应的对象,修改对象的内容。原创 2023-01-29 10:23:37 · 773 阅读 · 0 评论 -
JavaScript高级 ES6类
我们会发现,按照前面ES5的构造函数形式创建类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解,而在ES6新的标准中使用了class关键字来直接定义类,但是类本质上依然是前面所讲的构造函数、原型链的语法糖而已使用class来定义类的方法有两种:类声明和类表达式// ES5中定义类 // function Person() {} // ES6定义类 class Person {原创 2023-01-15 17:01:26 · 1009 阅读 · 0 评论 -
JavaScript高级 对象增强补充
【代码】JavaScript高级 对象判断方法。原创 2023-01-14 20:15:41 · 69 阅读 · 0 评论 -
JavaScript高级 ES5 面向对象原型继承
当我们通过引用对象的属性key来获取一个value时,它会触发 [[Get]]的操作,这个操作会首先检查该对象是否有对应的属性,如果有的话就使用它,如果对象中没有该属性,那么会访问对象[[prototype]]内置属性指向的对象上的属性。原型对象上面是有一个constructor属性的, 默认情况下原型上都会添加一个属性叫做constructor,这个constructor指向当前的函数对象。因为它是一个函数,才有了这个特殊的属性,而不是它是一个对象,所以有这个特殊的属性。原创 2023-01-14 19:19:15 · 943 阅读 · 0 评论 -
JavaScript高级 Object.defineProperty对象的控制
如果我们想要对一个属性进行比较精准的操作控制,那么我们就可以使用属性描述符, 通过属性描述符可以精准的添加或修改对象的属性, 属性描述符需要使用 Object.defineProperty 来对属性进行添加或者修改。Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。属性描述符的类型有两种:数据属性描述符,存取属性描述符。原创 2023-01-13 15:02:23 · 110 阅读 · 0 评论 -
JavaScript高级 JavaScript函数 纯函数 柯里化 组和函数 手写 apply、call、bind
纯函数的维基百科定义:在程序设计中,若一个函数符合以下条件,那么这个函数被称为纯函数, 此函数在相同的输入值时,需产生相同的输出,函数的输出和输入值以外的其他隐藏信息或状态无关,也和由I/O设备产生的外部输出无关, 该函数不能有语义上可观察的函数副作用,诸如“触发事件”,使输出设备输出,或更改输出值以外物件的内容等。柯里化也是属于函数式编程里面一个非常重要的概念,是把接收多个参数的函数,变成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数,而且返回结果的新函数的技术。原创 2023-01-13 13:35:09 · 580 阅读 · 0 评论 -
JavaScript高级 内存管理和闭包
不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存,某些编程语言会可以自动帮助我们管理内存但是不管以什么样的方式来管理内存,内存的管理都会有如下的生命周期第一步:分配申请你需要的内存(申请)第二步:使用分配的内存(存放一些东西,比如对象等)第三步:不需要使用时,对其进行释放手动管理内存:比如C、C++,包括早期的OC,都是需要手动来管理内存的申请和释放的自动管理内存:比如Java、JavaScript、Python、Swift、Dart等,它们有原创 2023-01-10 11:27:14 · 385 阅读 · 0 评论 -
JavaScript高级 浏览器的渲染原理与JavaScript代码执行原理
defer 属性告诉浏览器不要等待脚本下载,而继续解析HTML,构建DOM Tree,脚本会由浏览器来进行下载,但是不会阻塞DOM Tree的构建过程,如果脚本提前下载好了,它会等待DOM Tree构建完成,在DOMContentLoaded事件之前先执行defer中的代码,所以DOMContentLoaded总是会等待defer中的代码先执行完成。解析的过程中,如果遇到CSS的link元素,那么会由浏览器负责下载对应的CSS文件,下载CSS文件是不会影响DOM的解析的。原创 2022-12-31 11:35:39 · 2214 阅读 · 2 评论 -
JavaScript高级 this指向问题
bind() 方法创建一个新的绑定函数,在bind() 被调用时,这个新函数的this 被指定为bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。隐式绑定有一个前提条件:必须在调用的对象内部有一个对函数的引用,正是通过这个引用,间接的将this绑定到了这个对象上。this的绑定和定义的位置(编写的位置)没有关系, 但是this的绑定和调用方式以及调用的位置有关系。毫无疑问,默认规则的优先级是最低的,因为存在其他规则时,就会通过其他规则的方式来绑定this。显示绑定优先级高于隐式绑定。原创 2022-12-30 13:01:14 · 658 阅读 · 0 评论 -
JavaScript 总结(2022)
JavaScript [ 1995 Brendan Eich ]原创 2022-05-27 19:54:10 · 701 阅读 · 0 评论