【ES6】ES6新特性入门

进制转换

1,进制转换

console.log(0b10);//2
console.log(0O10);//8
console.log(0x10);//16

2,判断是否是进制转换类型相同

console.log(0b11===3);//true
console.log(0o10===8);//true
cossole.log(0x10===16);//true

3,将数字转换成2进制8进制以及16进制

let num = 10;
console.log(num.toString(2));//2进制转换
console.log(num.toString(8));//8进制转换
console.log(num.toString(16));//16禁止转换

字符串以及解析

字符串以及字符串模板

//字符串与字符串模板
let name = "xwj"
let mystr1 = "你好,${name}!"//标准的字符串
let mystr2 = `你好,${name}!再见。`//反引号的字符串模板
console.log(mystr1);//你好,${name}!
console.log(mystr2);//你好,xwj!再见。

字符串模板(带有反义号)可以把值带进去

把字符串里面的值取出来,使用字符串模板解析

/解析模板
const age = 16
function tagged (formats,...args){
    console.log(formats);//[ '你好 ', '!再见。' ]
    console.log(args);//[ 16 ]
}
 tagged`你好 ${age}!再见。`

模板的延长

//脚本模板活用的方式
let name = "xwj";
let address = "网吧";
let str = `你好,${name}啊! 今天去${address}玩吧`;
console.log(str);


function markdown(formats,...args){//以markdown的形式
    console.log(formats);
    console.log(args);
    var result = "#信息标题\n";
    for(var i = 0;i< formats.length;i++){
        result += formats[i]+"**"+(args[i] || '')+"**";//使字体进行加粗
        return result;
    }
    
}
//对获取的args进行加粗

Symbol


//Symbol类型 属于原始类型 Symbol内部分配了一个哈希值 使用哈希值进行比较

//传统字符串
let str3 = "HelloWord";
let str4 = "HelloWord";
console.log(str3 == str4);//true 说明值相等
console.log(str3 === str4);//true 说明都是字符串类型

//ES6新增的Symbol类型

let str1 = Symbol("HelloWord");
let str2 = Symbol("HelloWord");
console.log(str1 == str2);//false 值不相等
console.log(str1 === str2);//false 类型不相等
console.log(typeof(str1));//symbol

//原因:Symbol属于原始类型 会给内存分配一个地址 根据地址会进行计算一个哈希值 对哈希值进行比较所以类型不一样
// 进行比较内部的id

Symbol应用

1,作为常量

//作用:
//1,作为常量

const java = Symbol();//symbol可作为一个常量
const php = Symbol();

var lang = java;
if (lang === php){
    console.log('php的未来');
}
else if(lang === java){
    console.log('java的未来');
}

2,作为属性

//作用:
//2,作为属性

var s1 = Symbol("id1");
var s2 = Symbol("id2");

var obj ={ };//对象
obj[s1] = "helllo";
obj[s2] = "world";
 
console.log(obj);//{ [Symbol(id1)]: 'helllo', [Symbol(id2)]: 'world' }
console.log(obj[s1]);//helllo
console.log(obj[s2]);//world 


3,作为半隐藏属性

//3,作为半隐藏属性
const MYKEY = Symbol();
class User {
    constructor(key,name,age){//构造器进行传值
        this [MYKEY] = key;//没有加点的为半隐藏属性
        this.name = name;
        this.age = age;
    }
    checkKEY(key){
        return this[MYKEY]===key;
    }//此函数用于判断传进来的key的值是不是构造器里面传进来的值

    
}

let user = new User(123,'Curry',29);
console.log(user.name,user.age,user[MYKEY]);//Curry 29 123
console.log(user.checkKEY(123));//用于判断MYKEY里面的值是不是123 true
console.log(user.checkKEY(456));//用于判断MYKEY里面的值是不是123 false
console.log(Object.keys(user));//利用object.keys例出user里面的所有属性里面的key值被隐藏了 [ 'name', 'age' ]
console.log(JSON.stringify(user));//字符串打印 {"name":"Curry","age":29}



解构赋值

解构赋值的写法

//数组赋值
let [a,b,c] = [10,20,30]
console.log(a,b,c);//10 20 30

let [x,y,...other] =[1,2,3,4,5]
console.log(x,y,other);//1 2 [ 3, 4, 5 ]

//对象赋值

//使用的方法:用于函数传参
let { name, age } = {name : 'xwq',age : 26 };
console.log(name,age); //xwq 26

//函数赋值

function fun1(){
    return [10,20]
}

let [ num1 ,num2 ] = fun1(); 
console.log(num1,num2);//10 20

//函数参数名指定
function fun2(x=1,y=2){
    return x+y;
}
console.log(fun2({ }));//3
console.log(fun2({x:10}));//12
console.log(fun2({x:10,y:20}));//30

可迭代对象

//可迭代的对象(能够进行循环)

//使用的知识点:可迭代对象+Symbol.iterator

//使用for let of建立可迭代对象


//进行定义
class Player{//定义一个类

    constructor(list){//构造器接受一个数组
        this.list = list;//把数组里面的值传给list
    }
    [Symbol.iterator](){//固定的迭代器写法
      
        let current = 0;//首先定义一个当前的索引

        let that = this;//把整个对象的this赋值给that

        return{//return一个函数
            
            next(){//相当于接口里面的方法 用于每一次的迭代都需要使用done进行判断

                return current < that.list.length?  {vaule : that.list[current++],done:false}:{done:true};

            }
        }

    }
}


//使用方法:
let player =  new Player (['xwq','xwj','wqr']);

for(let tmp of player){//这里的for let of属于可迭代对象 让tmp输出都是player里面任何一个值
    console.log('name',tmp);
}



可迭代生长器的应用

//简单迭代生成器
//function *{}    迭代生成器
//  yield      迭代生成器的返回
// rerurn 与 yield 的区别:return 返回一个固定的值 yield每调用一次函数 返回不同的值

function *MYDOOG(){
    yield '好';
    yield '美';
    yield '丽';

}

for (let val of MYDOOG()){
    console.log(val);

}
//好
//美
//丽

function *countdown(begin){//依次递减
  while(begin>0){
    yield begin--;
  }
}

for(let npm of countdown(5)){
    console.log(npm);
}

//5
//4
//3
//2
//1

坚持!你就是最好的!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值