美文网首页
ES6的学习(上)

ES6的学习(上)

作者: 天问ing | 来源:发表于2019-01-03 18:06 被阅读0次

变量/赋值

1、新增定义变量的关键字letconst,与var的不同点:
    (1)、拥有块级作用域;
    (2)、不能够重复声明;
2、拥有块级作用域,无需闭包

//var变量定义的方式只有函数作用域,需要使用闭包解决以下问题
var btnArr = document.getElementsByTagName("input");
for(var i=0;i<btnArr.length;i++){
    (function(i){
        btnArr[i].onclick = function(){
        alert(i);
        }
    })(i)
}
//let存在块级作用域
let btnArr = document.getElementsByTagName("input");
for(let i=0;i<btnArr.length;i++){
    (function(i){
        btnArr[i].onclick = function(){
        alert(i);
        }
    })
}

3、解构赋值
    (1)、左右两边必须一致,右边的是一个合法的东西;
    (2)、必须定义和赋值同步完成;

函数

原先的方式
function (参数,参数){
    函数体
}
箭头函数
(参数,参数) => {
    函数体
}

    (1)、有且仅有一个参数时,()可以省略
    (2)、如果函数体只有一句话并且是return语句,{}可以省略

默认参数
原先的方式
function show(a,b,c){
    b = b||5;
    c = c||12;
    console.log(a,b,c);
}
show(12);
输出结果是:12,5,12
show(12,54,65)
输出结果是:12,54,65
es6的新的方式
function show(a,b=5,c=12){
    console.log(a,b,c);
}
show(12);
输出结果是:12,5,12
show(12,54,65)
输出结果是:12,54,65
参数展开

两个用途:
    (1)、可以用于剩余参数的接收,必须放在参数的最后位置,是一个数组

function show(a,b,...args){
    console.log(args);
}
show(45,4,50,52,12,5,4)
输出结果是:[50,52,12,5,4]

    (2)、可以用于将数组进行展开操作

let arr = [1,2,3];
let arr2 = [45,...arr,897];
console.log(arr2);
输出结果是:[45,1,2,3,897];

数组/json

数组的方法

    (1)、map,映射,一一对应的关系,
有返回值,返回的是操作过后的值,如果没有相关的操作,返回的值是undefined

let arr = [1,2,3,4];
let arr1 = arr.map(item => item*2);
console.log(arr1);
输出结果是:[2,4,6,8]

    (2)、fliter,过滤筛选,按照设置的条件过滤相关元素,有返回值,满足条件则返回该元素,注意:返回的是原先数组里面满足条件的元素

//筛选数组里面的奇数
let arr = [1,2,3,4,5,6];
let arr1 = arr.filter(item => item%2;)
console.log(arr1);
输出结果是:[1,3,5];

    (3)、forEach,遍历,遍历数组进行相关的操作,相当于for循环
    (4)、reduce,汇总,进去一堆 => 出来一个,有三个参数,分别是中间变量,当前结果,索引,有返回值,返回值会被当做中间变量的值重新加入计算

//用reduce计算数组的平均值
let arr = [12,5,54,64,6,78,54,56,464,45,11];
let ave = arr.reduce((temp,item,index) => {
    if(index < arr.length-1){
        return temp+item;
    }else{
        return (temp+item)/arr.length;
    }
})
console.log(ave);
输出结果是:77.18181818181819

    (5)、from,将伪数组(array like)处理成为数组,使其可以使用数组的相关方法进行处理

json的变化

    (1)、简写,值和名字一样的可以省略

let [a,b] = [13,2];
let obj = {a,b};
console.log(obj);
输出结果是:{a: 12, b: 3}

    (2)、function可以省略

//以前的方式:
let obj = {
    a: 1,
    b: 3,
    show: function(){
        console.log(this.a + this.b);
    }
}
obj.show();
输出结果是:4
let obj = {
    a: 1,
    b: 3,
    show(){
        console.log(this.a + this.b);
    }
}
obj.show();
输出结果是:4

字符串

字符串模板(反单引号`)

可以植入变量和任意换行

let json = {
    name: "张三",
    age: 20
}
console.log(`我的名字是${json.name},我的年龄是${json.age}岁`);
输出结果是:我的名字是张三,我的年龄是20岁
startsWith和endsWith

判断字符串是什么开头或者以什么结尾的,返回的是布尔类型

面向对象

ES6以前的js的面向对象实现
//官方没有特定的实现方式,通过构造函数的形式实现
function Person(name,age){
    this.name = name;
    this.age = age;
}
//通用的方法放在原型对象的属性上
Person.prototype.showName = function(){
    alert(this.name);
}
Person.prototype.showAge = function(){
    alert(this.age);
}
//原先的继承实现方式通过call来完成
function Worker(name,age,job){
    Person.call(this,name,age);
    this.job = job;
}
Worker.prototype = new Person();
Worker.prototype.constructor = Worker;
Worker.prototype.showJob = function(){
    alert(this.job);
}
let worker = new Worker("张三",20,"工人");
worker.showName();
worker.showAge();
worker.showJob();
ES6新的面向对象的实现方式
class Person{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    showName(){
        alert(this.name);
    }
    showAge(){
        alert(this.age);
    }
}
//子类继承
class Worker extends Person{
    constructor(name,age,job){
        //超类
        super(name,age);
        this.job = job;
    }
    showJob(){
        alert(this.job);
    }
}
let worker = new Worker("李四",20,"工人");
worker.showName();
worker.showAge();
worker.showJob();
this指向

    (1)、普通函数属于谁调用this指向谁,而箭头函数里面的this指向是由所处的环境所决定的;
    (2)、function里面的bind可以指定方法调用时的this指向

相关文章

  • ES6的学习(上)

    变量/赋值 1、新增定义变量的关键字let和const,与var的不同点:(1)、拥有块级作用域;(2)、不能够重...

  • ES6入门(一):let 和 const

    学习ES6,主要是通过阮一峰大神的ECMAScript 6 入门(电子版+实体书)以及网络上的学习ES6的视频进行...

  • ES6 学习笔记(上)

    认真学习了一遍ES6,发现很多很好用的功能。学习资料:《ECMAScript 6 入门》 之前写JS,虽然也遇到一...

  • 【一起来烧脑】入门ES6体系

    为什么要学习ES6掌握ES3、ES5、ES6的联系和区别 快速入门ES6 学会快速构建ES6的编译环境 学习ES6...

  • es6学习

    学习es6

  • ES6从入门到...

    项目中基本上用的都是Es6看阮一峰大神的ECMAScript 6 入门整理一些学习笔记 let ES6 新增了le...

  • ES6 常用特性(三)

    类 & 继承 类也是 ES6 一个不可忽视的新特性,虽然只是句法上的语法糖,但是相对于 ES5,学习 ES6 的类...

  • ES6

    ES6 主要学习来自 学习资源另外如果用webstorm的同学记得把javascript设置可支持es6,具体的话...

  • ES6重要吗?为什么要学习ES6?

    ES6 的全称 ECMAScript 1. ES6 使用频率比较高的特性 2. 学习 ES6 的步骤 3. 对比 ...

  • ES6,记录的20多问题,你都会吗?

    一、问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的JS语言标准,对分JS语言核...

网友评论

      本文标题:ES6的学习(上)

      本文链接:https://www.haomeiwen.com/subject/aljqrqtx.html