Object一些常用方法

1.Object.constructor

? ? 返回創(chuàng)建實(shí)例對象的Object構(gòu)造函數(shù)的引用注意炼吴,此屬性的值是對函數(shù)本身的引用,而不是一個包含函數(shù)名稱的字符串

varo={}; o.constructor===Object;//true

var o=new Object;o.constructor===Object;// true

function Tree(name){

????this.name=name;

}

var? theTree=newTree("Redwood");

console.log("theTree.constructor is "+theTree.constructor);

結(jié)果:

theTree.constructor is functionTree(name){this.name=name;}

2.Object.assign(target, ...sources)

? ??用于將所有可枚舉屬性的值從一個或多個源對象復(fù)制到目標(biāo)對象疫衩。它將返回目標(biāo)對象硅蹦。(將sources 的屬性賦予給target,??只會拷貝源對象自身的并且可枚舉的屬性到目標(biāo)對象??)

? ??繼承屬性和不可枚舉屬性是不能拷貝的

var obj = Object.create({foo: 1}, { // foo 是個繼承屬性。

? ? bar: {

? ? ? ? value: 2? // bar 是個不可枚舉屬性闷煤。

? ? },

? ? baz: {

? ? ? ? value: 3,

? ? ? ? enumerable: true? // baz 是個自身可枚舉屬性童芹。

? ? }

});

var copy = Object.assign({}, obj);

console.log(copy); // { baz: 3 }

原始類型會被包裝為對象

var v1 = "abc";

var v2 = true;

var v3 = 10;

var v4 = Symbol("foo")

var obj = Object.assign({}, v1, null, v2, undefined, v3, v4);

// 原始類型會被包裝,null 和 undefined 會被忽略鲤拿。

// 注意假褪,只有字符串的包裝對象(數(shù)組也可以)才可能有自身可枚舉屬性。

console.log(obj); // { "0": "a", "1": "b", "2": "c" }

3.Object.create(proto, [propertiesObject])

用來創(chuàng)建一個新的對象近顷,使用現(xiàn)在的對象來提供新創(chuàng)建的對象的——propto_? ??

如果propertiesObject沒有指定為 undefined生音,則是要添加到新創(chuàng)建對象的可枚舉屬性(即其自身定義的屬性,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應(yīng)的屬性名稱窒升。這些屬性對應(yīng)Object.defineProperties()的第二個參數(shù)

4.Object.defineProperties(obj,?props)與Object.defineProperty(obj,?'key', descriptor)

直接在一個對象上定義新的屬性或修改現(xiàn)有屬性缀遍,并返回該對象。數(shù)據(jù)屬性有4個描述內(nèi)部屬性的特性

[[Configurable]]

表示能否通過delete刪除此屬性饱须,能否修改屬性的特性域醇,或能否修改把屬性修改為訪問器屬性,如果直接使用字面量定義對象,默認(rèn)值為true

[[Enumerable]]

表示該屬性是否可枚舉譬挚,即是否通過for-in循環(huán)或Object.keys()返回屬性锅铅,如果直接使用字面量定義對象,默認(rèn)值為true

[[Writable]]

能否修改屬性的值殴瘦,如果直接使用字面量定義對象狠角,默認(rèn)值為true

[[Value]]

該屬性對應(yīng)的值,默認(rèn)為undefined

5.?Object.entries()

該方法返回一個給定對象自身可枚舉屬性的鍵值對數(shù)組蚪腋,其排列與使用for...in循環(huán)遍歷該對象時返回的順序一致(區(qū)別在于 for-in 循環(huán)也枚舉原型鏈中的屬性

constobj={foo:'bar',baz:42};

console.log(Object.entries(obj));// [ ['foo', 'bar'], ['baz', 42]?

6.Object.fromEntries(現(xiàn)在大部分瀏覽器不支持丰歌,火狐63支持)

把鍵值對列表轉(zhuǎn)換為一個對象

const map=newMap([['foo','bar'],['baz',42]]);

const obj=Object.fromEntries(map);

console.log(obj);// { foo: "bar", baz: 42 }

7.hasOwnProperty()方法會返回一個布爾值????? ? ? ??

主要用來判斷對象自身屬性中是否具有指定的屬性 ,該方法會忽略那些從原型鏈上繼續(xù)到的屬性? ? ??? ? ? ??

var? obj={};? ? ? ? obj.hasOwnProperty('cc')與Object.proptotype.hasOwnProperty('cc')效果是一樣的屉凯,都是用來判斷obj是否含有屬性cc立帖,但是后者會去掉因?yàn)閛bj有hasOwnProperty而出現(xiàn)錯誤情況?

8.Object.getOwnPropertyDescriptor(obj, prop) 與Object.getOwnPropertyDescriptors(obj)

? ??返回指定對象上一個自有屬性對應(yīng)的屬性描述符,獲取當(dāng)前的某個屬性是否可以修改悠砚,枚舉晓勇,刪除等

? ??o={bar:42};

????d=Object.getOwnPropertyDescriptor(o,"bar");

????// d {

????// configurable: true,//是否可通過delete刪除此屬性,能否修改屬性的特性

????// enumerable: true,//是否可以枚舉獲裙嗑伞(for-in循環(huán)或Object.keys()返回屬性)

????// value: 42,

????// writable: true,//是否可以修改

????// }

9.Object.getOwnPropertyNames()

? ??返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組,Object.keys()與for in也可以獲取所以的key值(還會獲取到原型鏈上的可枚舉屬性不過可以使用hasOwnProperty()方法過濾掉)绑咱。如果參數(shù)不是一個原始對象類型,將拋出一個?TypeError? 異常

10.Object.getOwnPropertySymbols()?

方法返回一個給定對象自身的所有 Symbol?屬性的數(shù)組枢泰。

11.Object.isExtensible()

? ? ?判斷一個對象是否是可擴(kuò)展的(是否可以在它上面添加新的屬性)描融。// 密封對象、?凍結(jié)對象也是不可擴(kuò)展.

12.Object.preventExtensions(empty);

? 對象變的不可擴(kuò)展.也就是永遠(yuǎn)不能再添加新的屬性

13.Object.seal()

? ??讓一個對象密封衡蚂,并返回被密封后的對象窿克。密封對象是指那些不能添加新的屬性,不能刪除已有屬性毛甲,以及不能修改已有屬性的可枚舉性年叮、可配置性、可寫性玻募,但可以修改已有屬性的值的對象只损。

14. Object.isSealed

????判斷一個對象是否是密封的(sealed)

15.Object.freeze(obj)

? 該方法可以凍結(jié)一個對象,凍結(jié)指的是不能向這個對象添加新的屬性七咧,不能修改其已有屬性的值改执,不能刪除已有屬性,以及不能修改該對象已有屬性的可枚舉性坑雅、可配置性辈挂、可寫性。該方法返回被凍結(jié)的對象裹粤。(但是也是像淺拷貝似的终蒂。入如果再深一層蜂林,就凍結(jié)不了)

const object1 = {

? property1: 42

};

const object2 = Object.freeze(object1);

object2.property1 = 33;

16.Object.isFrozen(?obj?)

判斷一個對象是否被凍結(jié)。(不可擴(kuò)展的對象,屬性改為不可配置都是凍結(jié))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拇泣,一起剝皮案震驚了整個濱河市噪叙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霉翔,老刑警劉巖睁蕾,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異债朵,居然都是意外死亡子眶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門序芦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臭杰,“玉大人,你說我怎么就攤上這事谚中】矢耍” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵宪塔,是天一觀的道長磁奖。 經(jīng)常有香客問我殷蛇,道長梁钾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任场钉,我火速辦了婚禮来吩,結(jié)果婚禮上敢辩,老公的妹妹穿的比我還像新娘蔽莱。我一直安慰自己弟疆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布盗冷。 她就那樣靜靜地躺著怠苔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仪糖。 梳的紋絲不亂的頭發(fā)上柑司,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機(jī)與錄音锅劝,去河邊找鬼攒驰。 笑死,一個胖子當(dāng)著我的面吹牛故爵,可吹牛的內(nèi)容都是我干的玻粪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼劲室!你這毒婦竟也來了伦仍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤很洋,失蹤者是張志新(化名)和其女友劉穎充蓝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喉磁,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谓苟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了线定。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娜谊。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖斤讥,靈堂內(nèi)的尸體忽然破棺而出纱皆,到底是詐尸還是另有隱情,我是刑警寧澤芭商,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布派草,位于F島的核電站,受9級特大地震影響铛楣,放射性物質(zhì)發(fā)生泄漏近迁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一簸州、第九天 我趴在偏房一處隱蔽的房頂上張望鉴竭。 院中可真熱鬧,春花似錦岸浑、人聲如沸搏存。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽璧眠。三九已至,卻和暖如春读虏,著一層夾襖步出監(jiān)牢的瞬間责静,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工盖桥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灾螃,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓揩徊,卻偏偏與公主長得像腰鬼,于是被迫代替她去往敵國和親藐握。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容