ES6入门(2)

ES6基本用法(2)

今天学习ES6的字符串、数值、函数、对象的一些新的方法、还有Symbol

复制字符串的方法

{
    let str = 'abc';
    console.log(str.repeat(2));//abcabc
}

注意这里的repeat(1)的时候是不会复制的就是abc

对接收的参数进行拼接

{
    let name = 'zhangsan';
    let hobby = 'i love coding';
    console.log(`i am ${name},${hobby}`);//i am zhangsan,i love coding

}

注意所有的参数以及字符串是被 ``包起来的,并且变量是用的${}括起来的。

头部补全和尾部补全

{
    console.log('1'.padStart(2,'0'));//01
    console.log('2'.padEnd(2,'0'));//20
}

这个很简单了,padStart对这个字符串1 在头部补了1个0,padEnd向这个字符串2的尾部补了一个0。

将函数参数作为返回值

{
    let user = {
        name: 'zhangsan',
        info: 'hello,world'
    };
    console.log(abc `${user.name},${user.info}`);//,,,zhangsanhello,world

    function abc(s,o1,o2){
        return s + o1 + o2;
    }
}

判断一个数是不是整数

{
    let iNumber1 = 10.2;
    let iNumber2 = 11.0;
    let iNumber3 = 11;
    console.log(Number.isInteger(iNumber1));//false
    console.log(Number.isInteger(iNumber2));//true
    console.log(Number.isInteger(iNumber3));//true
}

注意这里的iNumber2 = 11.0 虽然带了小数,但是也是整数。

模板字符串函数

 {
     console.log(String.raw`Hi\n${1+2}`);//Hi\n3
     console.log(`Hi\n${1+2}`);//
     
 }

将集合转换成真数组

{
   let p =  document.querySelectorAll('p');//获取页面上所有的p标签
   let arr = Array.from(p);//转成数组
   arr.forEach(function(item){console.log(item.textContent)})
}

如果用for in 或者 for of 的话 是不能够返回真正的数组,只是它们有数组相同的方法。

ES6中新增加的 for of 遍历

{
    let data = [1,2,3,true,undefined,NaN];
    for(let [index,value] of data.entries()){
        console.log('result:',index,value);//1,2,3,true,undefined,NaN
    }
}

ES6中函数

{
    function foo(x,y = 'niubi'){
        console.log(x,y);
    }
    foo('wo hen ');//wo hen niubi 
    foo('wo hen ','shuai');//wo hen shuai
}

可以看见在参数y中设置了默认值,当我们调用foo只传入了x,没有传入y的值,那么y的值就是默认的值,当我们传入了y的值那么就会覆盖默认值

…参数

{
    function foo(...args){
        for(let i of args){
            console.log(i);
        }
    }
    foo(1,2,3,NaN,undefined,true,{});
}

可变参数,将传入的值进行遍历

ES5对象中的方法和ES6的区别

{
    let es5 = {
        hello: function(){
            console.log('hello');
        }
    };

    let es6 = {
        hello(){
            console.log('hello');
        }
    };
    console.log(es5.hello(),es6.hello());
}

相比es6更加的简洁

ES6对象

{
    let name = 'zhangsan';
    let hobby = 'love coding';
    let es5 = {
        name: name,
        hobby: hobby
    };

    let es6 = {
        name,
        hobby
    }
    console.log(es5,es6);
}

在ES6中省略了: xxx 进行赋值。

ES6中新增Symbol

在ES6中新增加原始数据类型 Symbol

{
    let a1 = Symbol();
    let a2 = Symbol();
    console.log(a1 === a2);//false
}

用Sybol定义的变量 是独一无二的

但是想要找到Symbol那么可以用Symbol.for

{
    let a3 = Symbol.for('a3');
    let a4 = Symbol.for('a4');
}

关于Symbol作为对象

{
    let a1 = Symbol.for('abc');
    let obj = {
        [a1]: '123',
        'abc': 345,
        'c': 456
    };
    //传统的for of  for in 拿不到[a1]
    for(let [key,value] of Object.entries(obj)){
        console.log(key,value);// abc 345 c 456 
    }
}

如果想要拿到Symbol中a1的值 ,我们可以使用原型中的getOwnPropertySymbols()

{
   let a1 = Symbol.for('abc');
   let obj = {
        [a1]: '123',
        'abc': 345,
        'c': 456
    };
 Object.getOwnPropertySymbols(obj).forEach(function(item){
        console.log('objs',obj[item]);//objs 123
    })
}

上面虽然拿到了 [a1] 中的 123,但是原来的 abc he c都拿不到了,但是我们还是想拿到所有的信息,我们可以使用更加有用的返回值方法Reflect(ES6中新方法)

{
    let a1 = Symbol.for('abc');
    let obj = {
        [a1]: '123',
        'abc': 345,
        'c': 456
    };
    Reflect.ownKeys(obj).forEach(function(item){console.log(item,obj[item])}) //abc 345 c 456 Symbol(abc) "123"
}

这样就拿到了所有的key 和value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值