es6
bzcoder
这个作者很懒,什么都没留下…
展开
-
js判断对象是否为空
利用es6新增的对象实例属性Object.keys()获取由对象key组成的数组,判断数组长度即可原创 2022-04-22 10:11:11 · 268 阅读 · 0 评论 -
es6学习:Generator函数
写法: function* helloWorldGenerator() { yield 'hello'; yield 'world'; return 'ending'; } var hw = helloWorldGenerator(); Generator 函数是分段执行的,yield表达式是暂停执行的标记,而next方法可以恢复执行。 hw.next() // { value: 'hello', done: false } hw.next() // { value: 'world', d原创 2020-08-04 19:59:19 · 120 阅读 · 0 评论 -
es6学习:Promise对象
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 什么叫异步呢?简单说就是将一个未来结束的事件装到一个盒子里,等到同步事件都结束了他才会结束。 Promise需要注意的就是他的三个状态: pending(进行中) fulfilled(已成功) rejected(已失败) 他们只存在两种变换:从pending变为fulfilled和从pending变为rejected 基本用法 const promise = new Promise(function(res原创 2020-08-03 14:07:12 · 107 阅读 · 0 评论 -
es6学习:Reflect对象
Reflect的作用有以下几点: 1、将Object对象的一些明显属于语言内部的方法(比如Object.defineProperty),放到Reflect对象上。现阶段,某些方法同时在Object和Reflect对象上部署,未来的新方法将只部署在Reflect对象上。也就是说,从Reflect对象上可以拿到语言内部的方法。 2、修改某些Object方法的返回结果,让其变得更合理。比如,Object.defineProperty(obj, name, desc)在无法定义属性时,会抛出一个错误,而Reflec原创 2020-08-02 11:26:28 · 388 阅读 · 0 评论 -
es6学习:Proxy
Proxy这个构造函数的作用,简单说就是给原来的对象添加一个拦截层,当你要访问这个对象时,会先通过这层拦截。 用法: var proxy = new Proxy(target, handler); 其中第一个参数是所要拦截的目标对象,第二个参数是定制拦截行为的对象; 写法都是一样的,唯一的不同就是handler的写法。 例如: var proxy = new Proxy({}, { get: function(target, propKey) { return 35; } }); pro原创 2020-08-01 15:01:10 · 89 阅读 · 0 评论 -
es6学习:Set和Map
Set: Set本身是一个构造函数,最大的特性就是成员的值都是唯一的: const set = new Set(); const set = new Set([1, 2, 3, 4, 4]); //{1, 2, 3, 4} 这段代码中,set是一个对象,不要把他当作数组了 通过扩展运算符将其转化为数组: [...set]; // [1,2,3,4] 有了Set很明显可以用于数组去重: // 去除数组的重复成员 [...new Set(array)] 当然,字符串也可以去重: [...new S原创 2020-07-30 15:28:24 · 88 阅读 · 0 评论 -
es6学习:Symbol
Symbol存在的意义就是为了避免对象的属性名冲突,下面是几种对象中的写法: let mySymbol = Symbol(); // 第一种写法 let a = {}; a[mySymbol] = 'Hello!'; // 第二种写法 let a = { [mySymbol]: 'Hello!' }; // 第三种写法 let a = {}; Object.defineProperty(a, mySymbol, { value: 'Hello!' }); //对原创 2020-07-29 17:26:29 · 102 阅读 · 0 评论 -
es6学习:函数的扩展
1、现在,js可像java一样,直接给参数设置默认值了,而不像es5那么麻烦 function Point(x = 0, y = 0) { this.x = x; this.y = y; } const p = new Point(); p // { x: 0, y: 0 } 但是要注意的是,如果要设置默认值,一定要设置在参数最后的位置: function f(x, y = 5, z) { return [x, y, z]; } f() // [undefined, 5, undefine原创 2020-07-28 11:03:16 · 105 阅读 · 0 评论 -
es6学习:对象的扩展
还是那句话,js为了更加成熟,逐渐的类似于java这种语言,在对象扩展这方面也是非常明显。 较常用的两点: 1、属性的简洁表示 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 最主要的还是方法的简写,跟java一样了: const o = { method() { return "Hello!";原创 2020-07-27 21:01:47 · 56 阅读 · 0 评论 -
原生js实现的ajax
简介 ajax可以说是互联网发展的一个至关重要的因素之一,因为它实现了不重新加载页面情况下的页面刷新,即当我们在浏览页面的时候,不用主动去刷新页面,ajax会自动帮助我们刷新接下来的内容。 ajax的使用方法: //第一步,创建XMLHttpRequest对象 var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHt原创 2020-07-27 11:48:13 · 83 阅读 · 0 评论 -
es6学习:数组的扩展
1、扩展运算符:… 将一个数组转为用逗号分隔的参数序列。 console.log(...[1, 2, 3]) // 1 2 3 该方法在函数中有较大作用: const numbers = [4, 38]; add(...numbers) //将数组转化为参数序列 赋值数组: 由于扩展运算符不会改变原数组,所以可以用它来赋值数组: const a1 = [1, 2]; // 写法一 const a2 = [...a1]; // 写法二 const [...a2] = a1; 合并数组: 由于…的特原创 2020-07-23 13:15:35 · 141 阅读 · 0 评论 -
es6学习:数值的扩展
为使js语言更加模块化,es6将很多全局的东西移植到了相应的模块内 例如将全局方法parseInt()和parseFloat(),移植到Number对象上面,行为完全保持不变。 这两个方法很简单,就不作说明了。 Number.isFinite(), Number.isNaN() : isFinite(25) // true isFinite("25") // true Number.isFinite(25) // true Number.isFinite("25") // false isNaN(NaN)原创 2020-07-21 20:02:32 · 102 阅读 · 0 评论 -
es6学习:字符串的扩展及新增方法
1、字符串的扩展很多,但最重要的肯定是模板字符串 传统的输出模板写法非常繁琐,要不断的使用连接符,es6模板字符串很好的解决了这个问题: let a = 10; let str = 'abcd' //传统拼接字符串的写法 + 'efg' + a + 'hijklmn' + 'opq'; //es6模板字符串的写法 let str = `abcd efg${a}hijklmn opq`; 如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。 如果不想要这个换行,可以使用trim原创 2020-07-21 10:51:58 · 108 阅读 · 0 评论 -
es6学习:变量的解构赋值及应用,json
解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。 1、数组的解构赋值: 本质上就是模式匹配,只要等号两边的模式相同,左边就会被右边赋值。 例如: let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [ , , third] = ["foo", "bar", "baz"]; third // "baz" let [x原创 2020-07-13 21:31:44 · 350 阅读 · 0 评论 -
es6学习:let与const的理解与使用
在一开始学习js的时候,相信很多学过c c++ java等语言的人都会觉得很奇怪,特别是在声明变量的时候,比如我先console.log(a) 后 var a = 10;在上述语言中一定会报错,但在js中由于变量声明的提升,会输出未定义,这很不正常,也是js的一个缺陷,js很灵活,但过于灵活。 在es6的版本更新中,出现了 新的声明变量的方法:let const 学过上述语言的人只需要把let当作上述语言中声明变量的方法即可,几乎相同,es6的版本升级让js更加成熟了。 有了let之后我们使用变量之前必须原创 2020-07-12 11:35:40 · 123 阅读 · 0 评论