ES6對象擴展

一、屬性簡寫數組

ES6容許直接寫入變量和函數,做爲對象的屬性和方法,這時,當對象屬性名與屬性值名(注意:此時屬性值用一個變量代替)相同時能夠簡寫;函數

var name = 'zhangsan';
var user = {name}; //等同於 var user = {name:name}

二、方法簡寫spa

//對象方法 ES5 寫法
var user = {
    sayName:function(){
        ... 
    }      
}

//ES6寫法
var user = {
    sayName(){
       ...
    }  
}

三、屬性表達式prototype

ES6容許字面量定義對象時,能夠把表達式放在括號內code

let flag = 'key';
let obj = {[flag]:true,['a'+'bc':123]}; /// obj = {key:true,abc:123}

四、對象方法的 name 屬性,返回函數名對象

const person = { sayName() {}};
console.log(person.sayName.name);// "sayName"

五、Object.is()  同值相等,與 ‘===’相似,與之不一樣之處在於:+0不等於-0,NaN等於自身blog

console.log(Object.is(NaN,NaN));// true
 console.log(Object.is(+0,-0));// false

六、Object. setPrototypeOf(obj,prototype) ;繼承

用來設置一個對象的prototype對象,返回參數對象自己。它是 ES6 正式推薦的設置 原型對象的方法。該方法等同以下寫法:get

function (obj, proto) {
    obj.__proto__ = proto;
    return obj;
}

七、Object. getPrototypeOf(obj)原型

用於讀取一個對象的原型對象

八、遍歷對象

①Object.keys(obj),返回一個數組,成員是參數對象自身的(不含繼承的)全部可遍歷(enumerable)屬性的鍵名

var obj = {
    name:'zjl',
    age:19,
    gender:'男'
}
console.log(Object.keys(obj)) //[ 'name', 'age', 'gender' ]

②Object.values(obj),返回一個數組,成員是參數對象自身的(不含繼承的)全部可遍歷(enumerable) 屬性的鍵值

var obj = {
    name:'zjl',
    age:19,
    gender:'男'
}
console.log(Object.values(obj)) //[ 'zjl', 19, '男' ]

③Object. entries(obj)  返回一個數組,成員是參數對象自身的(不含繼承的)全部可遍歷(enumerable) 屬性的鍵值對數組。

var obj = {
    name:'zjl',
    age:19,
    gender:'男'
}
console.log(Object.entries(obj))   //[ [ 'name', 'zjl' ], [ 'age', 19 ], [ 'gender', '男' ] ]

九、Object.assign(),用於對象的合併,將源對象(source)的全部可枚舉屬性,複製到目標對象(target )。

Object.assign方法實行的是淺拷貝,而不是深拷貝。也就是說,若是源對象某個屬 性的值是對象,那麼目標對象拷貝獲得的是這個對象的引用。

let obj = {
    name:'hah',
    friends:[],
    count:{}
}
let obj3 = Object.assign({},obj);
console.log(obj3 === obj);  //false
console.log(obj3.friends === obj.friends); // true  淺複製
console.log(obj3.count === obj.count)   //true  淺複製
相關文章
相關標籤/搜索