ES全版本
ES2015~2020
Julia.wen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ES6|Promise解决回调深渊(callback hell)
promise是ES6提供的异步编程的一种解决方案,比传统的解决方案——回调函数和事件更加优雅。在讲promise之前有必要补充点异步操作的知识。Ajax的callback hell (回调深渊)Ajax (异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。下面将一个aja原创 2020-08-19 11:18:49 · 883 阅读 · 2 评论 -
ES6|微任务—promise
promise是ES6提供的异步编程的一种解决方案,比传统的解决方案——回调函数和事件更加优雅。在讲promise之前有必要补充点异步操作的知识。JS的执行阶段js引擎的执行阶段分为三个部分:语法分析—>预编译—>执行阶段,这里来讲讲第三个阶段——执行阶段。下面通过几个问题来一步步理解执行阶段。Ajax回调地狱...原创 2020-08-19 00:34:19 · 1691 阅读 · 1 评论 -
前端的浅拷贝与深拷贝
前端的浅拷贝与深拷贝深拷贝和浅拷贝概念Object.assign()是浅拷贝赋值运算符(=)是浅拷贝JSON的两个方法实现一个深拷贝深拷贝和浅拷贝概念数据类型分为两种:基本数据类型和引用数据类型。而浅拷贝和深拷贝的概念是对于引用数据类型来讲的。浅拷贝:浅拷贝是对象(或数组)共用的一个内存地址,对象的变化相互印象。对象的深拷贝:简单理解深拷贝是将对象(或数组)放到新的内存中,两个对象的改变不会相互影响。由此可见,判断是深拷贝还是浅拷贝最直接的方法是改变源对象(被拷贝的对象)的值,如果目标对象受之原创 2020-08-17 08:33:55 · 600 阅读 · 0 评论 -
map——ES6的新数据结构
map——ES6的新数据结构基本语法遍历方式weakMap基本语法ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。实例化let map = new Map([iterable])Iterable 可以是一个数组或者其原创 2020-08-16 17:22:25 · 255 阅读 · 0 评论 -
set—ES6的新数据结构
set—ES6的新数据结构set基本语法set的遍历方式weakset在以往的javascript中,通常用Array和Object来存储数据,但是在频繁操作数据的过程中查找或者统计并需要手动来实现,并不能简单的直接使用。 比如如何保证 Array 是去重的,如何统计 Object 的数据总数等,必须自己去手动实现类似的需求,不是很方便。 在 ES6 中为了解决上述痛点,新增了数据结构 Set 和 Map,它们分别对应传统数据结构的“集合”和“字典”。set基本语法Set类似于数组,但是数组内元素不重原创 2020-08-16 16:14:09 · 174 阅读 · 0 评论 -
ES6|新原始数据类型:Symbol
ES6引入了一种新的原始数据类型Symbol,表示独一无二的。是javascript的第七种数据类型。另外六种是:undefined、null、String、Number、Object声明方式Symbol 值通过Symbol函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。let s1=Symbol()let s2=Symbol()console.原创 2020-08-16 14:13:15 · 399 阅读 · 0 评论 -
ES6的类与继承
ES6类与继承声明类setters&&getters静态方法继承声明类Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。这句话摘自阮一峰老师的博客,这句话放在ES5中可以这么说,但是放到ES6中就不那么合适,因为ES6用class关键字规范了类的声明。先来看看在ES6之前,是怎么声明类的:let Animal = function(type)原创 2020-08-16 12:30:36 · 209 阅读 · 0 评论 -
ES5类与继承
ES5的类与继承搞清楚ES5类主要是要搞清楚静态属性、静态方法、实例属性、实例方法的概念。上代码来看看://ES5自定义类function People(name,age){ //实例属性 定义在构造函数里 this.name=name this.age=age // this.showName=function(){//每次创建对象都要new Function() 通常不把方法写在类里而是写在原型上 // console.log("我的名字是"+th原创 2020-08-16 01:48:43 · 235 阅读 · 1 评论 -
ES6—Object新特性
ES6—Object新特性属性简洁表达法属性名表达式Object.is()判断两个对象是否严格相等Object.assign()对象的遍历方式方式一:for..in方式二:Object.keys()方式三:Object.getOwnPropertyNames()方式四:Reflect.ownKeys()属性简洁表达法在ES6之前,对象的表示都是以键值对的形式:let name = 'hello'let age = 11let obj = { name: name, age:原创 2020-08-10 22:34:05 · 390 阅读 · 0 评论 -
ES6|Function——箭头函数
ES6|Function——箭头函数箭头函数形式箭头函数对this的处理方式箭头函数不可以当作构造函数箭头函数不可以使用arguments参数箭头函数形式箭头函数是ES6的重要内容,为开发者带来了很多福利,首先,先来看看箭头函数的形式。在此之前,如果要声明一个函数,我们需要这样做:function hello() { console.log('say hello')}// 或let hello = function() { console.log('say hello')}原创 2020-08-10 11:03:21 · 845 阅读 · 0 评论 -
ES6|扩展运算符/Rest参数——“...“
扩展运算符/Rest参数...扩展运算符Rest参数扩展运算符和Rest参数都用符号"…"来表示,但是表达的确实相反的意思。扩展运算符是将固定的数组内容“打散”到参数里去,而Rest参数是将不定的参数“收敛”到数组中。扩展运算符应用一:扩展运算符拆分数组function sum(x = 1, y = 2, z = 3) { return x + y + z}console.log(sum(...[4])) // 9console.log(sum(...[4, 5])) // 12c原创 2020-08-10 08:28:50 · 452 阅读 · 0 评论 -
ES6—Function新特性
ES6—Function新特性默认参数函数作用域length属性name属性默认参数ES5中,函数的参数都是写在函数体里的function foo(x,y){ y=y||'world' console.log(x,y)}foo('hello','jim')//hello jimfoo('hello',0)//hello world但是当函数多个参数都涉及到初始化时,这样写显然不太优雅,ES6就提供了一种写法:function foo(x,y='world'){ co原创 2020-08-09 23:00:25 · 705 阅读 · 0 评论 -
ES6常量声明方式——const
ES6常量声明方式——const定义常量const声明常量拥有块级作用域const不存在变量提升上一篇说了ES6变量声明方式let( https://blog.youkuaiyun.com/juliaandjulia/article/details/107524107),今天就来聊聊ES6常量的声明方式。定义常量在ES5中定义一个常量:Object.defineProperty(window,'PI',{ value:3.14, writable: false})console.log(PI原创 2020-08-09 16:26:31 · 909 阅读 · 0 评论 -
小例子理解ES6新声明方式let
let是ES6新的变量声明方式,相当于ES5中的var,那么相比于var,let又有什么新特性呢?今天就来聊聊let的特性。1、let不属于顶层对象windowvar声明的变量属于window对象,可以用 window.变量名 调用,但是let声明的变量不属于window对象。下面结合例子来说明一下:var的例子var a=5 //var定义该作用域内的全局变量console.log(window.a)//5 (a是window的变量)delete a//delete只能删除对象不能删除变量c原创 2020-08-09 15:32:37 · 306 阅读 · 1 评论 -
ES6|数组的扩展
类数组/伪数组在 JavaScript 的世界里有些对象被理解为数组比如函数中的 arguments、DOM中的 NodeList等。当然,还有一些可遍历的对象,看上去都像数组却不能直接使用数组的 API,因为它们是伪数组(Array-Like),下面根据例子来理解伪数组与数组的区别:伪数组具备两个特征:1. 按索引方式储存数据 2. 具有length属性常见伪数组如下(此处定义的伪数组在后文伪数组转换成数组时会用到)://使用instanceof来检测某个对象是否是数组的实例//HTMLColl原创 2020-07-20 22:01:12 · 225 阅读 · 0 评论 -
ES6|数组遍历方式
ES6|数组遍历方式find()findIndex()for ofES6新增了以下三种数组遍历方法,若要与ES5对比学习,可参考我的另外一篇博客——ES5中数组的各种遍历方法(链接: link.)find()array.find(function(currentValue,index,arr), thisValue)*elem必需,表当前元素*index可选,表当前元素索引值*array可选,表当前元素所属的数组对象*thisValue可选。传递给函数的值一般用 “this” 值。如果这个参数原创 2020-07-20 20:05:47 · 721 阅读 · 0 评论 -
ES6新语法|解构赋值
ES6新语法|解构赋值什么叫解构赋值?数组解构赋值对象解构赋值字符串解构赋值应用什么叫解构赋值?解构赋值简单来说:就是从数组(字符串当成数组解构)和对象提取值,对变量进行赋值。 tip:解构赋值重点是在赋值,赋值的元素是要拷贝出来赋值给变量,赋值的元素本身是不会被改变的数组解构赋值//旧语法let arr=[1,2,3]let a=arr[0]let b=arr[1]let c=arr[2]*关键:模式的匹配 右边什么结构,左边就写成什么结构//数组解构赋值let [a,b,c]=[原创 2020-07-19 23:09:36 · 302 阅读 · 0 评论 -
ES5|数组的各种遍历方式
ES5|数组的遍历方式之后所有例子都使用以下这个数组:let arr=[1,2,3,2,4]for循环//forfor(let i=0;i<arr.length;i++){ console.log(arr[i])}1 2 3 2 4forEach()array.forEach(function(elem,index,array), thisValue)*elem必需,表当前元素*index可选,表当前元素索引值*array可选,表当前元素所属的数组对象*thi原创 2020-07-19 23:02:51 · 500 阅读 · 0 评论
分享