javaScript之ES6(四)


對(duì)象

對(duì)象的屬性

  1. 屬性名可省略
    ES6中,當(dāng)對(duì)象中的key:value鍵值對(duì),如果value是個(gè)變量/函數(shù),此時(shí)省略key,key的值就是變量名/函數(shù)名。
var a = 1;
var obj = {
  a,
  fn(){
    console.log(1)
  }
obj;
//{a:1,fn:fn(){console.log(1)}}

2.屬性名可變
實(shí)際上大多數(shù)瀏覽器都已支持此方式
var a = 'name';
var obj = {};
obj[a] = '全棧前端';

  1. 屬性的描述器(Descriptor)
    屬性的此對(duì)象用來(lái)控制屬性的行為,常用到枚舉(enumerable)
    查看屬性的描述器:
Object.getOwnPropertyDescriptor(object,key)
var obj = {a:1};
Object.getOwnPropertyDescriptor(obj,'a');
//{value:1,writable:true,enumerable:true,configurable:true}
  1. 可枚舉性
    屬性的enumerable值,不可枚舉時(shí)以下操作會(huì)忽略此屬性:
    1.for...in...循環(huán)
    for in 循環(huán)也會(huì)遍歷到繼承的屬性(最初枚舉只為了遍歷開某些屬性,比如toString方法等)
    2.Object.keys()
    3.JSON.stringify()
    4.Object.assign()
    5.Reflect.enumerable()

ES6對(duì)象常用的方法

1.合并對(duì)象Object.assign(target,source...)
此方法將其他對(duì)象的可枚舉屬性淺合并到目標(biāo)對(duì)象里,重復(fù)的會(huì)被覆蓋

var obj = {a:1};
var obj1={b:2};
Object.assign(obj,obj1);
obj;
//{a:1,b:2}
注:克隆對(duì)象可使用此方法解決
  1. ES6對(duì)象不常用方法
    Object.is(val1,val2)
    比較2個(gè)值是否全等,基本同===(NaN比較和+0,-0比較結(jié)果不同)
JS第七種數(shù)據(jù)類型Symbol

七種數(shù)據(jù)類型

bolean、number 、string、undefined、null、object、symbol(標(biāo)示類型)

symbol含義

表示獨(dú)一無(wú)二的,是基本數(shù)據(jù)類型的一種,類似字符串。
它是為了解決命名重復(fù)問(wèn)題。

symbol創(chuàng)建

symbol類型數(shù)據(jù)只能使用Symbol()函數(shù)創(chuàng)建
注意:

  1. symbol值不能與其他類型值進(jìn)行運(yùn)算
    var s = Symbol();
    s;
    //輸出Symbol()

Symbol(del)函數(shù)

該函數(shù)返回一個(gè)symbol類型的值,其中參數(shù)des表示對(duì)值的描述
注意:
symbol函數(shù)返回的值永遠(yuǎn)不相同,即便參數(shù)des相同,返回值也不同。

轉(zhuǎn)化

類型數(shù)據(jù)不會(huì)自動(dòng)轉(zhuǎn)化,可以轉(zhuǎn)換為字符串或布爾值

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

方法

1.Symbol.for(des)
登記symbol值,使用此方法生成的symbol值,如果des相同則認(rèn)為是同一個(gè)值。

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

應(yīng)用

1.作為對(duì)象的key的值
必須使用[],取值用。語(yǔ)法報(bào)錯(cuò)(點(diǎn)語(yǔ)法認(rèn)為后面是字符串)

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

注:
(1)對(duì)象中屬性名是symbol則無(wú)法用for in變量,使用Object.getOwnPropertySymbo()返回所有symbol屬性名的數(shù)組或者使用Reflect.ownKeys()返回所有屬性名的數(shù)組
(2)用作私有屬性

Set結(jié)構(gòu)

概念

Set結(jié)構(gòu)類似數(shù)組,但是不會(huì)有重復(fù)的值

創(chuàng)建

Set結(jié)構(gòu)只能通過(guò)Set()構(gòu)造器創(chuàng)建

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

注:symbol數(shù)據(jù)類型由Symbol函數(shù)創(chuàng)建,不需要實(shí)例化

Set([arr])構(gòu)造函數(shù)

用來(lái)創(chuàng)建一個(gè)Set結(jié)構(gòu)的數(shù)據(jù),參數(shù)arr可選(初始化數(shù)據(jù))
var s = new Set([1,2,2]);
s;//Set(2){1,2}

Set結(jié)構(gòu)的屬性和方法

屬性
1.size成員數(shù)量
2.constructor構(gòu)造器,自然是Set
方法
1.add(value)添加值并返回自身(可鏈?zhǔn)讲僮鳎?br> 2.delete刪除某個(gè)值,返回true/false(刪除不存在的value)
3.clear()清空所有值,無(wú)返回值
4.has(value)查找,返回true/false
5.keys()、values()、entries()、forEach()不常用

遍歷

默認(rèn)可遍歷(實(shí)際調(diào)用的values()方法)
for...of

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

應(yīng)用

1.Array.from()或者...展開符號(hào),可以將Set結(jié)構(gòu)轉(zhuǎn)為數(shù)組
2.數(shù)組去重

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

WeakSet

類似Set,但是只能存放對(duì)象,而且保存的數(shù)據(jù)都是弱引用(不被垃圾回收機(jī)制計(jì)算在內(nèi),意味著保存的數(shù)據(jù)很可能會(huì)消失,且弱引用不可遍歷)

  • 創(chuàng)建:WeakSet()構(gòu)造器

  • 方法:add、delete、has

  • 屬性:無(wú)size屬性
    -應(yīng)用:保存dom,不必?fù)?dān)心內(nèi)存泄露

                   -----本系列文章到此結(jié)束,喜歡的點(diǎn)個(gè)贊再走。
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] 參考阮一峰的ECMAScript 6 入門參考深入淺出ES6 let和const let和const都...
    郭子web閱讀 1,913評(píng)論 0 1
  • 第3章 基本概念 3.1 語(yǔ)法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,489評(píng)論 0 21
  • 屬性的簡(jiǎn)潔表示法 ES6允許直接寫入變量和函數(shù),作為對(duì)象的屬性和方法。這樣的書寫更加簡(jiǎn)潔。 上面代碼表明,ES6允...
    呼呼哥閱讀 3,008評(píng)論 0 2
  • 1.屬性的簡(jiǎn)潔表示法 允許直接寫入變量和函數(shù) 上面代碼表明,ES6 允許在對(duì)象之中,直接寫變量。這時(shí),屬性名為變量...
    雨飛飛雨閱讀 1,254評(píng)論 0 3
  • 好像 為你成魔 亦或是 忘了自我 我,總是 時(shí)而高興,時(shí)而痛苦 所幸 我還記得那個(gè)、模糊的我 所以 再見,親密的愛(ài)...
    夢(mèng)里夢(mèng)外諦聽你閱讀 205評(píng)論 1 8

友情鏈接更多精彩內(nèi)容