JS的ES6

JS的ES6

1.let

let age = 12;

(1). 作用:

  • 与var类似, 用于声明一个变量

(2). 特点:

  • 在块作用域内有效

  • 不能重复声明

  • 不会预处理, 不存在提升

(3). 应用:

  • 循环遍历加监听

  • 使用let取代var是趋势

2.const

const sex = ‘男‘;

(1). 作用:

  • 定义一个常量

(2). 特点:

  • 不能修改

  • 其它特点同let

(3). 应用:

  • 保存不用改变的数据

3.解构赋值

(1)对象的解构赋值:从对象的属性中取到想要的属性值

1     let obj = {name : ‘kobe‘, age : 39};
2     //对象的解构赋值
3     let {name,age,xxx} = obj;  //定义的变量要与属性key相同,使用大括号{}
4     console.log(age,name,xxx); //39 "kobe" undefined

(2)数组的解构赋值

1     let arr = [‘abc‘, 23, true];
2     let [, b, c, d] = arr;  //使用中括号[],可以使用占位空的,还是按顺序获得数组下标对应的值
3     console.log(b, c, d); //23 true undefined

用处:简化传参

1     let obj = {name : ‘kobe‘, age : 39};
2
3     function person1({name, age}) {
4      console.log(name, age);
5     }
6     person1(obj);

4.模版字符串

模板字符串必须用 `` 包含,变量用${xxx}

1     let obj = {
2         name : ‘anverson‘,
3         age : 41
4     };
5     console.log(‘我叫:‘ + obj.name + ‘, 我的年龄是:‘ + obj.age); //我叫:anverson, 我的年龄是:41
6
7     console.log(`我叫:${obj.name}, 我的年龄是:${obj.age}`); //我叫:anverson, 我的年龄是:41

5.简写的对象写法:

  • 省略同名的属性

  • 省略方法function以及前面的:

 1     let x = 3;
 2     let y = 5;
 3     //普通额写法
 4 //    let obj = {
 5 //        x : x,
 6 //        y : y,
 7 //        getPoint : function () {
 8 //            return this.x + this.y
 9 //        }
10 //    };
11     //简化的写法
12     let obj = {
13         x,  //为外部的x
14         y,  //为外部的y
15         getPoint(){  //省略:function
16             return this.x
17         }
18     };
19     console.log(obj, obj.getPoint());  //Object 3

6.三点运算符

又称:rest参数

作用:用来取代arguments 但比arguments灵活

限制:

  • 只能是最后部分形参参数。

  • 只能遍历数组,不能遍历对象。

 1     //作为形参,是真实的数组可以遍历
 2     function fun(...values) {
 3         console.log(arguments);
 4 //        arguments.forEach(function (item, index) {
 5 //            console.log(item, index);  //报错,arguments是伪数组不能遍历
 6 //        });
 7         console.log(values);
 8         values.forEach(function (item, index) {
 9             console.log(item, index);
10         })
11     }
12     fun(1,2,3);
13
14     //将一个数组插入到另一个数组
15     let arr = [2,3,4,5,6];
16     let arr1 = [‘abc‘,...arr, ‘fg‘];
17     console.log(arr1); //‘abc‘ 2 3 4 5 6 ‘fg‘

7.形参的默认值

作用:当不传入参数的时候默认使用形参里的默认值

1     //定义一个点的坐标
2     function Point(x=12, y=12) {
3         this.x = x;
4         this.y = y;
5     }
6     let point = new Point(25, 36);
7     console.log(point);  //25 36
8     let point2 = new Point();
9     console.log(point2);  // 12 12

8.箭头函数

又称:lambda表达式[和Java的差不多,但符号是=>]

 1         //1.普通写法
 2         let fun = function () {
 3             console.log(‘fun()‘);
 4         };
 5         fun();
 6         //2.没有形参,并且函数体只有一条语句
 7         let fun1 = () => console.log(‘fun1()‘);
 8         fun1();
 9         console.log(fun1());
10         //3.一个形参,并且函数体只有一条语句
11         let fun2 = x => x;
12         console.log(fun2(5));
13         //4.形参是一个以上
14         let fun3 = (x, y) => x + y;
15         console.log(fun3(25, 39)); //64
16
17         //5.函数体有多条语句
18         let fun4 = (x, y) => {
19             console.log(x, y);
20             return x + y;
21         };
22         console.log(fun4(34, 48)); //82

特殊点在this:

箭头函数的this看外层的是否有函数,

  • 如果有,外层函数的this就是内部箭头函数的this.
  • 如果没有,则this是window。

箭头函数在定义时就确定了!!!使用call,apply,bind都不能绑定this。

一般函数得看谁调用他,this就是谁,可以使用call,apply,bind。

1     <button id="btn">测试箭头函数this_1</button>
2     <button id="btn2">测试箭头函数this_2</button>
 1         setTimeout(() => {
 2             console.log(this); //window
 3         }, 1000)
 4
 5         let btn = document.getElementById(‘btn‘);
 6         //没有箭头函数
 7         btn.onclick = function () {
 8             console.log(this); //btn
 9         };
10         //箭头函数
11         let btn2 = document.getElementById(‘btn2‘);
12
13         let obj = {
14             name: ‘kobe‘,
15             age: 39,
16             getName: () => {
17                 btn2.onclick = () => {
18                     console.log(this);
19                 };
20             }
21         };
22         obj.getName(); //window
23
24
25         function Person() {
26             this.obj = {
27                 showThis: () => {
28                     console.log(this);
29                 }
30             }
31         }
32         let fun5 = new Person();
33         fun5.obj.showThis(); //Person
 1         var name = "windowname";
 2         var oo = {
 3             name:"outname",
 4             ll :{
 5                 inname : "inname",
 6                 f : () => console.log(this),
 7                 ff(){
 8                     console.log(this);
 9                 }
10             }
11         }
12
13         var obj4 = {
14             name : "name"
15         }
16
17         oo.ll.f(); //window
18         oo.ll.ff(); //调用它的ll ==> Object {inname: "inname"}
19         oo.ll.ff.call(obj4); //obj4 ==>Object {name: "name"}
20         oo.ll.f.call(obj4); //绑定不了还是window

原文地址:https://www.cnblogs.com/zhihaospace/p/12008776.html

时间: 2024-09-30 00:14:00

JS的ES6的相关文章

JS的ES6的Generator

JS的ES6的Generator 1.Generator函数的概念: ES6提供的解决异步编程的方案之一,现在已经不怎么用了被淘汰了. Generator函数是一个状态机,内部封装了不同状态的数据. 用来生成遍历器对象 暂停函数,yield关键字暂停,next()方法启动,yield可以获得next方法传递过来的数据,如果无数据yield返回undefined,如果有数据则返回数据. 2.Generator使用: 1 function* generatorExample(){ 2 let res

js的ES6特性

一. let和const关键字 let出现之前,js所有的作用域都是以函数为单位的,只要在一个function里声明的var, 无论是for循环等块里面声明的还是在块外面声明的,整个function都可以使用这个var,比如: function foo() { for (var i=0; i<100; i++) { // } i += 100; // 仍然可以引用变量i } 我个人的理解是js的提升特性,函数会将里面声明的所有var都提升到函数开始的地方,所以整个函数内都共享这些var. let

Atitit js es5 es6新特性 attilax总结

1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 基本chrome ff 360se8全面支持了2 2. ECMAScript 2015(ES6)的十大特征 – WEB前端开发 - 专注前端开发,关注用户体验.html2 1.1. JavaScript发展时间轴: 1.1995:JavaScript诞生,它的初始名叫LiveScript. 2.1997:ECMAScript标准确立. 3.1999:ES3出

[Node.js] Testing ES6 Promises in Node.js using Mocha and Chai

Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must include tests as well to ensure future iterations don't break them. In this lesson, I show you a simple ES6 Promise in Node.js, then walk you through creati

JS篇 ES6新特性

注意: 1. Node环境下,--harmony参数启用ES6新特性,许多新特性只有在strict mode下才生效,因此使用"use strict"或者--use_strict,否则harmony没有被启用: 1. 块级作用域(Block scope) // Block scope function f1(){ console.log("Outside."); } (function(){ if(false){ // f1定义在if {}之内 function f

js学习-es6实现枚举

最近大部分时间再写dart,突然用到js,发现js不能直接声明一个枚举.搜索发现还是有实现的方式,于是总结一下. 目录 枚举特点 Object.freeze() Symbol 实现 体现不可更改 体现值的唯一性 需要注意的地方 枚举特点 枚举值不能重复 不能被修改 switch case可以直接判断 Object.freeze() Object.freeze() 方法可以冻结一个对象.一个被冻结的对象再也不能被修改:冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有

面向对象JS ES5/ES6 类的书写 继承的实现 new关键字执行 this指向 原型链

一 .什么是面向对象? 面向对象(Object Oriented),简写OO,是一种软件开发方法. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物. 面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构.CAD技术.人工智能等领域. 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式. 编程范式 一般可以

Node.js用ES6原生Promise对异步函数进行封装

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.转载请注明来源http://blog.csdn.net/azureternite 目录(?)[+] Promise的概念 Promise 对象用于异步(asynchronous)计算..一个Promise对象代表着一个还未完成,但预期将来会完成的操作. Promise的几种状态: pending:初始状态,即等待操作的执行 fulfilled:成功的操作 rejected:失败的操作 pending的状态

js中ES6的Set的基本用法

ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. const s = new Set(); [2,3,5,4,5,2,2].forEach(x => s.add(x)); // Set结构不会添加重复的值 for(let i of s) { console.log(i); } // ## 初始化 // 例一 可以接受一个数组作为参数 const set = new Set([1,2,3,4,4,]); // ...将一个数组转为用逗号分隔的参数序列 con