成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

初入ES6-對(duì)象的擴(kuò)展和SET,MAP

adam1q84 / 3261人閱讀

摘要:對(duì)象是無(wú)序?qū)傩缘募嫌袃煞N創(chuàng)建對(duì)象的方式字面量構(gòu)造函數(shù)定義個(gè)每一個(gè)類別的對(duì)象普通對(duì)象具有對(duì)象所有默認(rèn)的內(nèi)部行為特異對(duì)象具有某些與默認(rèn)行為不符的內(nèi)部行為標(biāo)準(zhǔn)對(duì)象內(nèi)建對(duì)象對(duì)象屬性的簡(jiǎn)寫屬性的名稱和變量的名稱一樣的話,可以只寫屬性的名稱分別把參數(shù)

對(duì)象是無(wú)序?qū)傩缘募?/strong>
有兩種創(chuàng)建對(duì)象的方式

//字面量
var obj = {
    name : "obama",
    age :77
}
//構(gòu)造函數(shù)
var obj = new Object();
obj.name = "obama"

ES6定義個(gè)每一個(gè)類別的對(duì)象

普通對(duì)象ordinary(具有JS對(duì)象所有默認(rèn)的內(nèi)部行為)

特異對(duì)象exotic(具有某些與默認(rèn)行為不符的內(nèi)部行為)

標(biāo)準(zhǔn)對(duì)象standard

內(nèi)建對(duì)象buildin

對(duì)象屬性的簡(jiǎn)寫
屬性的名稱和變量的名稱一樣的話,可以只寫屬性的名稱

function Obj(name,age){
    return {
        name : name,    //分別把參數(shù)的值賦予對(duì)象的屬性,并且是同名的屬性名稱
        age:age
    }
}
//簡(jiǎn)寫的屬性
function Obj(name ,age){        //簡(jiǎn)寫的方法屬性名稱和參數(shù)的名稱是一樣的,,可以混在一起的寫
    return {
        name,
        age,
    }
}
Obj("obama",77)    //{name: "obama",age:77}

可計(jì)算的屬性名稱

//對(duì)象屬性的名稱可以是標(biāo)識(shí)符,或者是字符串,讀取屬性的方法使用點(diǎn)號(hào)或者方括號(hào)(內(nèi)部都是字符串)
var obj = {
    a:"obama",
    "a b c d" : 34,    //此時(shí)不能用點(diǎn)號(hào)讀取屬性
    ["hello"]:"world"    //此時(shí)的方括號(hào)里面的字符串是可以計(jì)算的,必須用方括號(hào)
    //es5和es6的區(qū)別是前者要外部賦值時(shí)候使用,后者都可以
}
obj.a //obama;
obj["a b c d"]    //34

重復(fù)的屬性名稱
不會(huì)報(bào)錯(cuò),直接取值最后的屬性

"use strict"
var obj = {
    age : 23,
    age :34
}
//es6最終會(huì)age = 34;

自有屬性的枚舉順序 對(duì)需要遍歷的方法
數(shù)字屬性在前面按照順序排列,其他的字符串屬性和Symbol按照加入的順序排列

//ES5之前并沒(méi)有定義如何排序的,但是ES6開始定義如何返回的順序

var obj ={
    a:2,
    2:34,
    d:23,
    1:23,
    f:2
}
Object.keys(obj)    //["1", "2", "a", "d", "f"]

對(duì)象方法的簡(jiǎn)寫
可以省略function關(guān)鍵字,直接名稱方法

var obj = {
    name : "obama",
    behavor:function(){
        alert("i am presdent of Amercia")
    }
 }
var obj = {
    name :"bush",
    behavor(){
         alert("i am presdent of Amercia")    //簡(jiǎn)寫的語(yǔ)法,此方法有個(gè)name的屬性即使括號(hào)前的名稱
    }    

}

擴(kuò)展的ES6方法
1,Object.is()比較兩個(gè)變量的大小對(duì)比===

NaN === NaN    //false
Object.is(NaN,NaN)    //false;
-0 === +0   //true
Object.is(-0,+0)    //false;
//除以上的區(qū)別其他都是類似的

2,Object.assign()接受任意多的對(duì)象參數(shù),同名的屬性后面會(huì)覆蓋前面的同名屬性,深拷貝一個(gè)對(duì)象

function mixin(rec,sup){
    Object.keys(sup).forEach(function(key){
            rec[key] = sup[key];        //此處是淺拷貝
       });
       retrun rec;
}
var rec = {};
var obj1 = {name : "obama"};
var obj2 = {age : 34};
var obj3 = {name : "bush",beha(){console.log("this is presdent")}};
Object.assign(rec,obj1,obj2,obj3)
//{name: "bush", age: 34, beha: ?}深度拷貝

擴(kuò)展的原型

var str = new String("this is string");
var obj = { name : "obma"};
var test = Object.create(str);
str.isPrototypeOf(test)    //true
test.__proto__ = obj;    //強(qiáng)制的賦值
obj.isPrototypeOf(test)    //true
Object.getPrototypeOf(test)    //str

//ES6新的方法
test.setPrototype(obj)
obj.isPrototypeOf(test)    //true

super原型的指針只存在簡(jiǎn)寫的方法中

var a  = {
   aa(){return "a"}
};
var b = {
    aa(){return "b"}
};
var c = {
    c(){
        return Object.getPrototypeOf(this).aa.call(this)+"this is c"    //通原型的方法調(diào)用
    }
}
var c = {
    c(){
        return super.aa()+"this is here";        //有function關(guān)鍵字會(huì)報(bào)錯(cuò)
    }
}
Object.setPrototypeOf(c,b);
var d = Object.create(c)    //報(bào)錯(cuò),this的指向有問(wèn)題,調(diào)用棧超出;使用super避免了this 的指向

對(duì)象方法正式確定,添加[[homeObject]]指定放賦予的對(duì)象

SET
es5對(duì)象的限制,同名屬性會(huì)覆蓋,屬性名稱必須是字符串,
set是另外一種有序列表,包含相互獨(dú)立的不重復(fù)的值,不會(huì)對(duì)存儲(chǔ)的值進(jìn)行類轉(zhuǎn)換如果需要鍵名的話,和值是一樣的

const set = new Set([1,2]);    //參數(shù)是有遍歷接口的數(shù)據(jù);
set.add(3)    //增加數(shù)據(jù)
set.has(3)    //判斷是否包含某個(gè)值
set.delete(3)    //移除元素
set.clear()    //    清除元素
set.forEach((key,value,newSet)=>console.log(key,value,newSet))//默認(rèn)有三個(gè)參數(shù),值,鍵名,原數(shù)據(jù)
//使用擴(kuò)展運(yùn)算符轉(zhuǎn)為數(shù)組類型
const arrr = [...set];
//weakSet傳入的值必須是對(duì)象,構(gòu)造函數(shù)沒(méi)有參數(shù),只有三個(gè)方法,add,has,delete,不可以遍歷,也沒(méi)有size屬性

MAP
屬性和值可以是任何數(shù)據(jù)類型,屬性的判斷是透過(guò)Object.is()方法判斷的;

const map = new Map();
map.set("age",12);    //寫入數(shù)據(jù)
map.get("age")        //讀取數(shù)據(jù) ,如果數(shù)據(jù)的不存在 undefined;
//和Set一樣有has,delete,,clear,size的方法

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89112.html

相關(guān)文章

  • 初入ES6-Array

    摘要:用于將對(duì)象轉(zhuǎn)為數(shù)組可遍歷和類數(shù)組對(duì)象部署屬性的對(duì)象和擴(kuò)展運(yùn)算符的區(qū)別是任何具有屬性的都可以使用的方法是用原型該方法還有一個(gè)參數(shù)類似的新方法將字符串轉(zhuǎn)化為數(shù)組,特別是大于的單個(gè)字符,避免分割成多個(gè)用來(lái)彌補(bǔ)構(gòu)造函數(shù)的歧義三個(gè)空值只有一個(gè)參數(shù)其實(shí) 1,Array.from用于將對(duì)象轉(zhuǎn)為數(shù)組(可遍歷和類數(shù)組對(duì)象部署Iterator 屬性的對(duì)象)和擴(kuò)展運(yùn)算符的區(qū)別是任何具有Length屬性的都可...

    馬永翠 評(píng)論0 收藏0
  • 初入ES6-ProxyReflect

    摘要:用于修改某些操作的默認(rèn)行為和訪問(wèn)器屬性的行為類似在對(duì)象的前面多一層代理,對(duì)象字面量中定義屬性的特性方法,訪問(wèn)器屬性此時(shí)屬性被定義為訪問(wèn)器屬性不一樣的寫法中是用代理的寫法第一個(gè)參數(shù)是對(duì)象,第二個(gè)是要操作的方法對(duì)象也有兩個(gè)屬性,一個(gè)是目標(biāo)對(duì)象, 1,Proxy用于修改某些操作的默認(rèn)行為和訪問(wèn)器屬性的行為類似,在對(duì)象的前面多一層代理, const obj = { ...

    BakerJ 評(píng)論0 收藏0
  • angular2初入眼簾之-搭個(gè)環(huán)境

    angular2是什么?我猜不容我贅述,各位一定略有耳聞,無(wú)論是曾經(jīng)AngularJS的擁躉,亦或是React的粉絲,都或多或少的對(duì)她有過(guò)一點(diǎn)了解。未見(jiàn)其物、先聞其聲,angular2在問(wèn)世之前已經(jīng)做足了宣傳,想必諸位也一定被下面各種詞匯所震懾,什么:TypeScript、 ES5、 ES6、 Dart、 Immutable、 Unidirectional Data Flow、 Reactive ...

    everfight 評(píng)論0 收藏0
  • 初入ES6-Function

    摘要:之前的函數(shù)聲明及表達(dá)式函數(shù)的聲明函數(shù)表達(dá)式也可以此時(shí)的只是這個(gè)匿名函數(shù)的名字,和變量沒(méi)有關(guān)系構(gòu)造函數(shù)這種方法會(huì)運(yùn)行兩次代碼先實(shí)例后執(zhí)行函數(shù)體數(shù)的默認(rèn)值如果沒(méi)有傳入?yún)?shù)就使用默認(rèn)值,利用的短路特性傳入的參數(shù)為值會(huì)忽略判斷是否傳參,如果沒(méi) ES5之前的函數(shù)聲明及表達(dá)式1,函數(shù)的聲明 function fn(){ dosomething; }; 2,函數(shù)表達(dá)式 var fn = f...

    zgbgx 評(píng)論0 收藏0
  • 初入ES6-letconst以及代碼塊

    摘要:變量和常量的聲明一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除語(yǔ)法同一個(gè)作用域的聲明,只要有同樣的聲明都會(huì)報(bào)錯(cuò),只能修改值語(yǔ)法,和一樣,但是不能更改值以上兩個(gè)語(yǔ)法都不存在變量提升的效果直接使用的話,直接引用錯(cuò)誤 變量和常量的聲明 var a = 34; //一般的聲明,不在函數(shù)內(nèi)就是全局變量,值可以是基本和引用值,可以隨時(shí)修改和刪除 ...

    wwolf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<