JS對象Object的常用方法彙總

//Object.assign函數,第一個參數爲目標對象,後面依次爲源對象
//將來自一個或多個源對象中的值複製到一個目標對象
var first = {name : 'kong'};
var last = {age : 18};
var person = Object.assign(first, last);
console.log(person);
//{name : 'kong', age : 18},注意這裏first因爲是第一個參數會被當成目標對象,所以first自身屬性也被更改爲和person一樣了,即first === person
//用於克隆對象
var clone = Object.assign({}, person);



//Object.freeze函數
//阻止修改現有屬性的特性和值,並阻止添加新屬性
var a = {name : 'kong', age : 18};
Object.freeze(a);
//此時不允許添加或修改a的任何屬性



//Object.is函數
//用於判斷兩個值是否相同
Object.is(a, b);
//返回true或false
//注意,該函數與==運算符不同,不會強制轉換任何類型,應該更加類似於===,但值得注意的是它會將+0和-0視作不同值



//Object.keys函數
//用於返回對象可枚舉的屬性和方法的名稱
var a = {name : 'kong', age : 18, func : function(){}};
Object.keys(a);
//['name', 'age', 'func']



//Object.defineProperty函數
//將屬性添加到對象,或修改現有屬性的特性
var a = {};
Object.defineProperty(a, 'name', {
	value : 'kong',
	enumerable : true	//該屬性是否可枚舉
})
//與之對應的是Object.defineProperties函數,可添加多個屬性
Object.defineProperties(a, {
	name : {
		value : 'kong',
		enumerable : true
	},
	job : {
		value : 'student',
		enumerable : true
	}
})



//hasOwnProperty方法
//確定某個對象是否具有帶指定名稱的屬性,有的話返回true,否則false
//注意,該方法不會檢查對象原型鏈中的屬性
var s = new String('123');
console.log(s.hasOwnProperty('split'));			//false
console.log(String.prototype.hasOwnProperty('split'));		//true



//isPrototypeOf方法
//確定一個對象是否存在於另一個對象的原型鏈中
function a(){
}
var b = new a();
console.log(a.prototype.isPrototypeOf(b));
//true
參考鏈接:https://msdn.microsoft.com/zh-cn/library/dn342818(v=vs.94).aspx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章