Javascript数据结构与算法--读后总结(1)ES6

一、ES6部分

1、函数的参数默认值

    function sum(x = 1, y = 2, z = 3) {
        return x + y + z
    };
    console.log(sum(4, 5)); //输出12

由于没有传入参数z,它的值默认为3。因此,4 + 5 + 3 ==12

ES6之前,上面的函数我们只能写成这样:

    function sum(x, y, z) {
        if (x === undefined)
            x = 1;
        if (y === undefined)
            y = 2;
        if (z === undefined)
            z = 3;
        return x + y + z;
    };

有了ES6的参数默认值,代码可以少写好几行

2、声明展开和剩余参数

在ES5中,可以用apply()函数把数组转化为参数。为此,ES6有了展开操作符(...)。

举例来说,考虑上面声明的sum函数。可以执行如下代码来传入参数x、y和z:

var params = [3, 4, 5];
console.log(sum(...params));
// 以上代码和下面的ES5代码的效果是相同的:
var params = [3, 4, 5];
console.log(sum.apply(undefined, params));

在函数中,展开操作符(...)也可以代替arguments,当作剩余参数使用。

    function restParamaterFunction(x, y, ...a) {
        return (x + y) * a.length;
    }
    console.log(restParamaterFunction(1, 2, "hello", true, 7)); //输出9;
    //以上代码和下面代码的效果是相同的:
    function restParamaterFunction(x, y) {
        var a = Array.prototype.slice.call(arguments, 2);
        return (x + y) * a.length;
    };

3、数组解构

(1)可以用来一次初始化多个变量

var [x, y] = ['a', 'b'];
//以上代码和下面代码的效果是相同的:
var x = 'a';
var y = 'b';

(2)数组解构也可以用来进行值的互换,而不需要创建临时变量,如下:

[x, y] = [y, x];
//以上代码和下面代码的效果是相同的:
var temp = x;
x = y;
y = temp;

这对你学习排序算法会很有用,因为互换值的情况很常见。

(3)属性简写的功能,它是对象解构的另一种方式

    var [x, y] = ['a', 'b'];
    var obj = { x, y };
    console.log(obj); // { x: "a", y: "b" }
    //以上代码和下面代码的效果是相同的:
    var x = 'a';
    var y = 'b';
    var obj2 = { x: x, y: y };
    console.log(obj2); // { x: "a", y: "b" }

4、使用类进行面向对象编程

JavaScript面向对象编程还是基于原型实现的

声明类的方式

    function Book(title, pages, isbn) { //{1}
        this.title = title;
        this.pages = pages;
        this.isbn = isbn;
    }
    Book.prototype.printTitle = function () {
        console.log(this.title);
    }

可以用ES6把语法简化如下:

    class Book { //{2}
        constructor(title, pages, isbn) {
            this.title = title;
            this.pages = pages;
            this.isbn = isbn;
        }
        printIsbn() {
            console.log(this.isbn);
        }
    }

类的继承

    class ITBook extends Book { //{1}
        constructor(title, pages, isbn, technology) {
            super(title, pages, isbn); //{2}
            this.technology = technology;
        }
        printTechnology() {
            console.log(this.technology);
        }
    }
    let jsBook = new ITBook('学习JS算法', '200', '1234567890', 'JavaScript');
    console.log(jsBook.title);
    console.log(jsBook.printTechnology());

我们可以用extends关键字扩展一个类并继承它的行为(行{1})。在构造函数中,我们也可以通过super关键字引用父类的构造函数(行{2}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值