美文网首页
javaScript之ES6(四)

javaScript之ES6(四)

作者: 夏树大笨熊 | 来源:发表于2018-05-04 23:45 被阅读151次

    对象

    对象的属性

    1. 属性名可省略
      ES6中,当对象中的key:value键值对,如果value是个变量/函数,此时省略key,key的值就是变量名/函数名。
    var a = 1;
    var obj = {
      a,
      fn(){
        console.log(1)
      }
    obj;
    //{a:1,fn:fn(){console.log(1)}}
    

    2.属性名可变
    实际上大多数浏览器都已支持此方式
    var a = 'name';
    var obj = {};
    obj[a] = '全栈前端';

    1. 属性的描述器(Descriptor)
      属性的此对象用来控制属性的行为,常用到枚举(enumerable)
      查看属性的描述器:
    Object.getOwnPropertyDescriptor(object,key)
    var obj = {a:1};
    Object.getOwnPropertyDescriptor(obj,'a');
    //{value:1,writable:true,enumerable:true,configurable:true}
    
    1. 可枚举性
      属性的enumerable值,不可枚举时以下操作会忽略此属性:
      1.for...in...循环
      for in 循环也会遍历到继承的属性(最初枚举只为了遍历开某些属性,比如toString方法等)
      2.Object.keys()
      3.JSON.stringify()
      4.Object.assign()
      5.Reflect.enumerable()

    ES6对象常用的方法

    1.合并对象Object.assign(target,source...)
    此方法将其他对象的可枚举属性浅合并到目标对象里,重复的会被覆盖

    var obj = {a:1};
    var obj1={b:2};
    Object.assign(obj,obj1);
    obj;
    //{a:1,b:2}
    注:克隆对象可使用此方法解决
    
    1. ES6对象不常用方法
      Object.is(val1,val2)
      比较2个值是否全等,基本同===(NaN比较和+0,-0比较结果不同)
    JS第七种数据类型Symbol

    七种数据类型

    bolean、number 、string、undefined、null、object、symbol(标示类型)

    symbol含义

    表示独一无二的,是基本数据类型的一种,类似字符串。
    它是为了解决命名重复问题。

    symbol创建

    symbol类型数据只能使用Symbol()函数创建
    注意:

    1. symbol值不能与其他类型值进行运算
      var s = Symbol();
      s;
      //输出Symbol()

    Symbol(del)函数

    该函数返回一个symbol类型的值,其中参数des表示对值的描述
    注意:
    symbol函数返回的值永远不相同,即便参数des相同,返回值也不同。

    转化

    类型数据不会自动转化,可以转换为字符串或布尔值

    var s = Symbol("name");
    String(s);//"Symbol(name)"
    Boolean(s);//true
    !s;//false
    //if语句也可
    if(s){
    }
    

    方法

    1.Symbol.for(des)
    登记symbol值,使用此方法生成的symbol值,如果des相同则认为是同一个值。

    var s1 = Symbol.for("ss");
    var s2 = Symbol.for("ss");
    s1===s2;
    //true
    

    2.Symbol.keyFor(var)

    返回已登记symbol的描述之
    var s1=Symbol.for("ss");
    Symbol.keyFor(s1);
    //ss
    

    应用

    1.作为对象的key的值
    必须使用[],取值用。语法报错(点语法认为后面是字符串)

    var s=Symbol();
    var obj={
    [s]:1
    };
    obj;//{symbol():1}
    obj[s];//1
    

    注:
    (1)对象中属性名是symbol则无法用for in变量,使用Object.getOwnPropertySymbo()返回所有symbol属性名的数组或者使用Reflect.ownKeys()返回所有属性名的数组
    (2)用作私有属性

    Set结构

    概念

    Set结构类似数组,但是不会有重复的值

    创建

    Set结构只能通过Set()构造器创建

    var s=new Set();
    s.add(1);
    s.add(2);
    s.add(1);
    s;//Set(2){1,2}
    

    注:symbol数据类型由Symbol函数创建,不需要实例化

    Set([arr])构造函数

    用来创建一个Set结构的数据,参数arr可选(初始化数据)
    var s = new Set([1,2,2]);
    s;//Set(2){1,2}

    Set结构的属性和方法

    属性
    1.size成员数量
    2.constructor构造器,自然是Set
    方法
    1.add(value)添加值并返回自身(可链式操作)
    2.delete删除某个值,返回true/false(删除不存在的value)
    3.clear()清空所有值,无返回值
    4.has(value)查找,返回true/false
    5.keys()、values()、entries()、forEach()不常用

    遍历

    默认可遍历(实际调用的values()方法)
    for...of

    var s = new S([1,2,3]);
    for(i of s){
      console.log(i)
    }
    //1,2,3
    

    应用

    1.Array.from()或者...展开符号,可以将Set结构转为数组
    2.数组去重

    var arr = [1,2,2];
    var s = new Set(arr);
    var newArr=Array.from(s);
    newArr;//[1,2]
    

    WeakSet

    类似Set,但是只能存放对象,而且保存的数据都是弱引用(不被垃圾回收机制计算在内,意味着保存的数据很可能会消失,且弱引用不可遍历)

    • 创建:WeakSet()构造器

    • 方法:add、delete、has

    • 属性:无size属性
      -应用:保存dom,不必担心内存泄露

                     -----本系列文章到此结束,喜欢的点个赞再走。
      

    相关文章

      网友评论

          本文标题:javaScript之ES6(四)

          本文链接:https://www.haomeiwen.com/subject/izmjrftx.html