• es6知识总结--3


    es6知识总结--3

    es6对咱们es3,es5的数据类型进行了升级下边说新APIs!

    js数据类型有Number、String 、oject、Boolean、Null、Undefined六种数据类型 !

    下边介绍 Math、Number、String 、Array、Boject的新 APIs

    • Math
    • Number
    • String
    • Array
    • Boject

    Math

    下边我们介绍三个觉得大家能用的着的属性Math.trunc()、Math.sqrt()、Math.sign()

    let a=Math.trunc(4.1);                        //trunc去除整数的小数点部分
        console.log(a)//4
    let b=Math.sign(-4);    //sign方法用于判断一个数为正、负、0
    let c=Math.sign(4.1);
    let d=Math.sign(0);
        console.log(b);//-1
        console.log(c);//1
        console.log(d);//0
    let e=Math.sqrt(4)      //sqrt 用于开一个数的平方根
        console.log(e)//2
    let f=Math.cbrt(27);
        console.log(f);    //3*/
    

    Number

    console.log(Number.isInteger(12));   //true  //isInteger判断数组是否为整数 
    console.log(Number.isInteger(12.3)); //flase
    console.log(Number.isNaN(12145))  //false   //isNaN用于检查数组是否为NaN
    console.log(Number.isNaN(NaN)) // true
    

    String

    var str="javascript";
    console.log(str.includes("java"));//true   //includes()用来检查字符串是否有该连接字符
    console.log(str.includes("javt"));//false
    console.log(str.startsWith("ja"));//true   //startsWith用来检查字符串以什么开头
    console.log(str.endsWith("pt"));//true   //endsWith以什么结尾
    console.log("1".repeat(20))//20 个 1     //repeat用来复制字符串
    

    Array

    let arr=[1,2,3,4,5];
    let arr1=Array.from(arr);     //Array.from() 用来拷贝一份  
    arr1=[2,2,3,4,55];
    console.log(arr)
    console.log(arr1);//[2,2,3,4,55]
    
    console.log(Array.of(1,2,3))  //Array.of用于创建一个数组
    let shuzu=[1,2,3,4,5,6]
    console.log(shuzu.fill(4,1))  //fill传两个值后边那个规定从一位开始全部替换*/
    

    object

    let obj={x:1,y:1}; 
    let obj1={};  
    Object.assign(obj1,obj)         //Object.assign
    obj1.x=2;                       /*1.合并多个对象;2.克隆对象;3.为数组添加多个方法*/
    console.log(obj1)
    let obj2={a:2,b:"c"};           
    //let obj1= Object.assign({},obj2,obj);
    // console.log(obj1)//Object {a: 2, b: "c", x: 1, y: 1}
    let obj3={aa:1,bb:2}
    Object.assign(obj3,{
        sayhello:()=>{},
        sayhi:()=>{}
    })
    let person={
        name:"huahua",
        sex:"nan",
        age:18
    }
    let tao={
       // __proto__:person,
        xh:123
    }
    // console.log(tao)
    Object.setPrototypeOf(tao,person)    //setPrototypeOf用于设置继承属性
    console.log(tao.name)
    

    同样es6新规定了一个Symbol新属性

    ES5对象属性名都是字符串容易造成属性名的冲突。

    var a = { name: 'lucy'};
    
    a.name = 'lili';
    这样就会重写属性
    

    说的明白点其实Symbol就是为了处理这件事情,它表示独一无二的值
    Symbol值不能与其他类型的值进行运算

    
    // 没有参数的情况
            var s1 = Symbol();
            var s2 = Symbol();
    
            console.log(s1 === s2) // false
    
            // 有参数的情况
            var s1 = Symbol("foo");
            var s2 = Symbol("foo");
    
            console.log(s1 === s2) // false
    

    Symbol值作为对象属性名时,不能用点运算符

            var mySymbol = Symbol();
    
            // 第一种写法
            var a = {};
            a[mySymbol] = 'Hello!';
    
            // 第二种写法
            var a = {
            [mySymbol]: 'Hello!'
            };
    
            // 第三种写法
            var a = {};
            Object.defineProperty(a, mySymbol, { value: 'Hello!' });
             // 以上写法都得到同样结果
            console.log(a[mySymbol]) // "Hello!"
    

    防止对象的属性被串改

    let chenxu={
                name:"chenxu",
                age:"17"
            }
            chenxu.name="晨旭"
            console.log(chenxu);//被修改*/
            let chenxu1={
                [Symbol('name')]:"chenxu",
                age:"17"
            }
            chenxu1[Symbol('name')]="晨旭";
            console.log(chenxu1.name);//undefind
            console.log(chenxu1)  //Object {age: "17", Symbol(name): "chenxu", Symbol(name): "晨旭"}
    

    但是这里的Symbol在类外部也是可以访问的,只是不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()返回。但有一个Object.getOwnPropertySymbols方法,可以获取指定对象的所有Symbol属性名

  • 相关阅读:
    C#获取网上图片的宽高代码
    发现两个有趣的CSS3效果
    .NET WinForm画树叶小程序
    生产环境使用 pt-table-checksum 检查MySQL数据一致性【转】
    awk入门【转】
    MySQL数据库之auto_increment【转】
    crontab的使用方法
    linux添加swap分区【转】
    nginx反向代理转发后页面上的js css文件无法加载【原创】
    Serv-U日志文件保存设置【转】
  • 原文地址:https://www.cnblogs.com/chenxua/p/7168241.html
Copyright © 2020-2023  润新知