ES6学习

ES6学习
webstorm设置es6
在这里插入图片描述
在这里插入图片描述

let命令限定作用域

const常量定义

常量本身不能再赋值,但它里边的元素可以再赋值

进制转换

二进制:0b
八进制:0o
十六进制:0x
在这里插入图片描述

console.log(0b10);//2
console.log(0o10);//8
console.log(0x10);//10
/!*===:值一样,类型一样*!/
console.log(0b11 === 3);//true
console.log(0o10 === 8);//true
console.log(0x10 === 16);//true
/!*进制转换*!/
let num = 10;
console.log(num.toString(2));
console.log(num.toString(4));
console.log(num.toString(8));
console.log(num.toString(16));

嵌入字符串

在这里插入图片描述

/*字符串嵌入方式*/
/*字符串模板定义*/
let name = "shiyashu";
let mystr1 = "你好,${name}!";
/*``:反单引号,定义字符串模板*/
let mystr2 = `你好,${name}!`;
console.log(mystr1);
console.log(mystr2);
/*解析模板*/
function tagged(formats,...args) {
    console.log(formats);
    console.log(args);
}
tagged `你好,${name}!`

模板的延长线

在这里插入图片描述

/*字符串嵌入方式*/
/*字符串模板定义*/
/*模板的延长线*/
/*活用字符串模板*/
let name = "shiyashu";
let address = "网吧";
let mystr = `你好,${name}!
晚上一起去${address}玩吗?
等你的回信。`
console.log(mystr);
/*扩展文字模板*/
let fmtstr = markdown `你好,${name}!
晚上一起去${address}玩吗?
等你的回信。`;
console.log(fmtstr);
function markdown(formats,...args) {
    console.log(formats);
    console.log(args);
    var result = "# 信息标题\n";
    for(var i = 0;i < formats.length;i++){
        result += formats[i]+"**"+(args[i]|| '')+"**";
    }
    return result;
}

Symbol

在这里插入图片描述

/*ES6新增Symbol的原始类型*/
let str1 = String("helloworld!");
let str2 = String("helloworld!");
console.log(str1 == str2);
console.log(str1 === str2);
let s1 = Symbol("mySymbol!");
let s2 = Symbol("mySymbol!");
console.log(typeof s1);
console.log(s1.toString());
/*Symbol:内部唯一Id,hash值,比较*/
console.log(s1 == s2);
console.log(s1 === s2);

在这里插入图片描述
在这里插入图片描述

/*作为常量*/
const Java = Symbol();
const Ruby = Symbol();
const Perl = Symbol();
const Php = Symbol();
const VB = Symbol();
var lang = Java;
if (lang === Java) {
    console.log('Java的未来在哪里?');
}
if (lang === Ruby) {
    console.log('再学个Ruby on Rails吧');
}
/*作为属性*/
let s1 = Symbol("mySymbol!");
let s2 = Symbol("mySymbol!");
var obj = {};
obj[s1] = "hello";
obj[s2] = "world";
console.log(obj);
console.log(obj[s1]);
console.log(obj[s2]);
/*半隐藏属性*/
const MYKEY = Symbol();
class User {
    constructor(key, name, age){
        this[MYKEY] = key;
        this.name = name;
        this.age = age;
    }
    checkKEY(key){
        return this[MYKEY] === key;
    }
}
let user = new User(123, 'Kitty', 18);
console.log(user[MYKEY],user.name,user.age);
console.log(user.checkKEY(123));
console.log(user.checkKEY(456));
console.log(Object.keys(user));
console.log(JSON.stringify(user));

解构赋值

[destructuring assignment]
在这里插入图片描述

/*解构赋值*/
/*数组赋值*/
let [a,b,c] = [10,20,30];
console.log(a,b,c);
let [x,y,...other] = [1,2,3,4,5];
console.log(x,y,other);
/*对象赋值*/
let {name, age} = {name:'Kitty', age:18};
console.log(name, age);
/*函数赋值*/
let [num1, num2] = func1();
console.log(num1, num2);
function func1() {
    return [10,20];
}
/*函数参数名赋值*/
console.log(func2({}));
console.log(func2({x:10}));
console.log(func2({y:10}));
console.log(func2({x:10,y:10}));
function func2({x=1,y=2}) {
    return x+y;
}

数组循环 for… of

在这里插入图片描述

/*数组循环*/
let list = [10,20,30];
Array.prototype.Len = function () {};
/*只关心数组的值*/
for(let val of list)
    console.log(val)
/*关心对象所有属性*/
for(let val in list)
    console.log(val,list[val]);

函数的默认值

在这里插入图片描述
在这里插入图片描述

/*函数的默认值*/
/*字符参数*/
function sayHello(name = "kitty") {
    console.log(`hello ${name}`);
}
sayHello();
sayHello("shiyashu");
function add(a = 1, b = a) {
    return a+b;
}
console.log(add());
console.log(add(10));
console.log(add(10,20));
/*必须指定参数*/
function required() {
    throw new Error("参数未指定");
}
function sayBye(name = required()) {
    console.log(`${name} bye!`);
}
//sayBye();
sayBye("kitty");

可变长参数

在这里插入图片描述

/*可变长参数*/
function sum(...args) {
    let result = 0;
    args.forEach(val => {
        result += val;
    });
    return result;
}
/*function sum(...args) {
    let result = 0;
    args.forEach(function (val) {
        result += val;
    });
    return result;
}*/
console.log(sum(1,2,3));
console.log(sum(1,2,3,4,5,6,7,8,9,10));

箭头函数

[arrow Function]
在这里插入图片描述

/*箭头函数*/
let list = [10,20,30];
//ES5
let newlist = list.map(function (value,index) {
    return value * value;
});
console.log(newlist);
//ES6
newlist = list.map((value,index) => {
    return value * value;
});
console.log(newlist);
newlist = list.map(value => {
    return value * value;
});
console.log(newlist);

基本对象定义

在这里插入图片描述

/*基本对象定义*/
let title = "ES6从入门到放弃";
let price = 25;
let publish = "B站出版社";
let book = {
    title,price,publish,
    toString(){
        console.log(`<<${this.title}>> is ${price}`);
    }
};
book['lang'] = "简体中文";
console.log(book);
book.toString();

类定义class

在这里插入图片描述

/*类定义class*/
class Player{
    constructor(name,sex){
      this.name = name;
      this.sex = sex;
    }
    show(){
        console.log(`${this.name}的性别是${this.sex}`);
    }
    static info(){
        console.log("这是一个球员类,你可以使用他创建自己的球员!");
    }
}
let player = new Player("库里","男");
console.log(player.name,player.sex);
player.show();
Player.info();

setter,getter的定义

在这里插入图片描述

/*setter,getter的定义*/
class Player {
    constructor(name, sex) {
        this.name = name;
        this.sex = sex;
    }
    get age(){
        /*模板级变量:_*/
        return this._age;
    }
    set age(val){
        this._age = val;
    }
}
let player = new Player("库里","男");
console.log(player);
player.age = 28;
console.log(player);
console.log(player.age);

类继承

在这里插入图片描述

/*类继承*/
class Car{
    constructor(brand){
        this.brand = brand;
    }
    show(){
        console.log(`本车的品牌是${this.brand}`);
    }
}
class Lexus extends Car {
    constructor(brand, lineup){
        super(brand);
        this.lineup = lineup;
    }
    getPrice(){
        switch (this.lineup){
            case "RX":
                return 60;
            case "NX":
                return 40;
            default:
                throw new Error("未知车类别!");
        }
    }
}
let mycar = new Lexus("Lexus","RX");
mycar.show();
console.log("价格是:",mycar.getPrice(),"万");

循环我的对象

在这里插入图片描述

/*循环我的对象*/
let list = [10,20,30];
let mystr = '你好啊';
let mymap = new Map();
mymap.set('JS','Javascript');
mymap.set('PL','Perl');
mymap.set('PY','Python');
for (let val of list){
    console.log(val);
}
for (let val of mystr){
    console.log(val);
}
for (let [key,val] of mymap){
    console.log(key,val);
}
let it = mymap.values();
let tmp;
while(tmp = it.next()){
    console.log(tmp);
    if(tmp.done) break;
    console.log(tmp.value,tmp.done);
}

可迭代的对象

在这里插入图片描述

/*可迭代的对象*/
class Player {
    constructor(list){
        this.list = list;
    }
    [Symbol.iterator](){
        let current = 0;
        let that = this;
        return {
            next(){
                return current < that.list.length ? {
                    value: that.list[current++],
                    done: false
                }:{done:true};
            }
        };
    }
}
let player = new Player(['Curry','Harden','LeBron']);
for(let tmp of player){
    console.log("name:",tmp);
}

简单迭代生成器

在这里插入图片描述

/*简单迭代生成器*/
function* myGenerator(){
    yield '一';
    yield '条';
    yield '大';
    yield '河';
    yield '波';
    yield '浪';
    yield '宽';
}
for(let val of myGenerator()){
    console.log(val);
}
function* countdown(begin) {
    while(begin>0){
        yield begin--;
    }
}
for(let tmp of countdown(7)){
    console.log(tmp);
}

简单迭代类

在这里插入图片描述

/*简单迭代类*/
class MyList {
    constructor(list){
        this.list  = list;
        this[Symbol.iterator] = function* () {
            let current = 0 ;
            let that = this;
            while(current < that.list.length){
                yield that.list[current++];
            }
        }
    }
}
let mylist = new MyList([101,202,303,404,505]);
for(let val of mylist){
    console.log(val);
}

模板化设计

函数模块设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
math.mjs

/*模板化设计 mjs*/
/*建立一个模块*/
function add(x,y){
    return x+y;
}
function minus(x,y) {
    return x-y;
}
export {add, minus};

main.mjs

/*调用模块功能*/
import {add, minus} from './math';
console.log(add(10,20));
console.log(minus(30,20));

Terminal:

node --experimental-modules src/main.mjs

类模块设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Player .mjs

/*模板化设计 mjs*/
/*建立一个模块*/
class Player {
    constructor(name){
        this.name = name;
    }
    sayHello(){
        console.log(`hello ${this.name}`);
    }
}
export default Player;

main.mjs

/*调用模块功能*/
import Player from './Player';
let curry = new Player('Curry');
curry.sayHello();

Terminal:

node --experimental-modules src/main.mjs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值