javaScript之ES6(四)


对象

对象的属性

  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,不必担心内存泄露

                   -----本系列文章到此结束,喜欢的点个赞再走。
    
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [TOC] 参考阮一峰的ECMAScript 6 入门参考深入浅出ES6 let和const let和const都...
    郭子web阅读 5,815评论 0 1
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,734评论 0 21
  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6允...
    呼呼哥阅读 7,995评论 0 2
  • 1.属性的简洁表示法 允许直接写入变量和函数 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量...
    雨飞飞雨阅读 4,882评论 0 3
  • 好像 为你成魔 亦或是 忘了自我 我,总是 时而高兴,时而痛苦 所幸 我还记得那个、模糊的我 所以 再见,亲密的爱...
    梦里梦外谛听你阅读 1,450评论 1 8

友情链接更多精彩内容