【ES6】對象的拓展


引言:ES6添加了有關對象、Object的特性。

一、對象的兩種表示法【掌握】

1)簡潔表示法

        ES6允許直接寫入變量和函數作爲對象的屬性和方法。ES6允許在對象中只寫屬性名,不寫屬性值。這時,屬性值等於屬性名所表示的變量。對象屬性的簡寫如代碼塊1-1-1。

/***@@    代碼塊1-1-1    屬性的簡寫    @@***/
var foo = 'bar';
var baz = {foo};
baz // {foo: "baz"}

function f(x,y){
	return {x,y};
}
//等同於
function f(x,y){
	return {x:x,y:y};
}

f(1,2);  //  Object {x :1, y: 2}

        除了屬性的簡寫,方法也可以簡寫。如代碼塊1-1-2。

/***@@    代碼塊1-1-2    方法的簡寫    @@***/
var o = {
	method() {
		return "hello AJ";
	}
};
//等同於
var o = {
	method : function () {
		return "hello AJ";
	}
};

        下面給出一個綜合的例子。如代碼塊1-1-3。

/***@@    代碼塊1-1-3    簡寫的綜合例子    @@***/
var person = {
	name = "張雨澤",
	
	birth,//等同於birth:birth
	
	hello() { console.log('My name is ',this.name);}//等同於hello: function() ...
};

2)屬性名表達式法

        屬性名表達式法,顧名思義,就是用表達式的計算結果來作爲屬性名。如代碼塊1-2-1。

/***@@    代碼塊1-2-1    屬性名表達式法    @@***/
var prop = 'val';
var obj= {
	[prop] : true,
	['a'+'bc'] : 123
};
//obj { val : true, abc : 123}

二、Object.is()【瞭解】

        Object.is()用來比較兩個值是否嚴格相等。它與嚴格相等比較運算符(===)的行爲基本一致。見代碼塊2-1。

/***@@    代碼塊2-1    Object.is()用法規範    @@***/
Object.is('foo', 'foo') // true
Object.is({}, {}) // false

//Object.is與===的不同之處只有兩個,一個是-0與+0,一個是NaN等於自身
+0 === -0 // true
NaN === NaN // false

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

//ES5可以通過下面的代碼來部署Object.is
Object.defineProperty(Object, 'is',{
	value: function(x,y){
		if(x===y) {
			//針對+0 不等於 -0的情況
			return x !==0 || 1/x ===1/y;
		}
		// 針對NaN的情況
		return x !== x&& y!==y;
	},
	configurable:true,
	enumerable: true,
	writable: true
});

三、Object.assign()【瞭解】

        Object.assign()用來將源對象source的所有可枚舉屬性複製到目標對象target。見代碼塊3-1。

/***@@    代碼塊3-1    Object.assign()    @@***/
var target = {a:1};
var source1 = {b:2};
var source2 = {c:3};

Object.assign(target,source1,source2);

target // {a:1,b:2,c:3}

查看更多ES6教學文章:

1. 【ES6】let與const 詳解
2. 【ES6】變量的解構賦值
3. 【ES6】字符串的拓展
4. 【ES6】正則表達式的拓展
5. 【ES6】數值的拓展
6. 【ES6】數組的拓展
7. 【ES6】函數的拓展
8. 【ES6】對象的拓展
9. 【ES6】JS第7種數據類型:Symbol
10. 【ES6】Proxy對象
11. 【ES6】JS的Set和Map數據結構
12. 【ES6】Generator函數詳解
13. 【ES6】Promise對象詳解
14. 【ES6】異步操作和async函數
15. 【ES6】JS類的用法class
16. 【ES6】Module模塊詳解
17. 【ES6】ES6編程規範 編程風格

參考文獻

阮一峯 《ES6標準入門(第2版)》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章