JS對象用法大全

文章如有錯誤請聯(lián)系我 anmingzhe@me.com


Object.assign() ?合并對象

多個參數(shù)错洁,除第一個參數(shù)的所有參數(shù)合并在第一個參數(shù)上

let obj = {a: 1} ? ??

let copy = Object.assign({}, obj) ??

copy ?// {a: 1}

obj.a = 2

copy.a // 1

copy.a = 3

obj.a // 2

得出結(jié)論蝉绷,兩個對象的指針不是同一個进栽。但是 只限于 一層對象说莫,如果對象是{a: {b:1}}那么就出問題了,她們的引用指針就成一個了跟啤,不是兩個獨立的對象了熬甫,? 建議拷貝對象的話,用JSON.parse(JSON.stringify(Object))這種方式進(jìn)行?

let o1 = {a: 1}

let o2 = {b: 2}

let o3 = {b: 3}

let obj = Object.assign(o1, o2, o3)

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

o1 // {a: 1, b: 2, c: 3} ?

得出結(jié)論 吧o2 ?o3合并在o1 上面?

obj.a = 10

o1.a // 10?

得出結(jié)論? 吧o2? o3合并在o1 上面 并賦值給obj 所以 o1和obj共用一個引用指針划提。

Object.create() ?創(chuàng)建對象 和 繼承對象

let a = {} ? ?a.__proto__ ?// 出來一大堆對象自帶的方法和屬性

let b = Object.create(null)? 創(chuàng)建一個以null為原型 的對象? b.__proto__ // undefined ?很干凈

一般當(dāng)你不想繼承任何Object.prototype枫弟,想要得到一個純凈對象時可以用Object.create(null)

function A() {}?

A.prototype.aaa = function(){console.log(111)}

function B() {}

B.prototype = Object.create(A.prototype) ? // 繼承,B 繼承了 A

let b = new B()

b.aaa() ?// 111

object.defineProperties() 在對象添加或修改屬性并返回改對象


Obj.defineProperty() 添加或修改對象上某個屬性鹏往,并返回此對象


Object.entries() 將對象轉(zhuǎn)化為數(shù)組

let obj = {name:'amz',age:23}

console.log( Object,entres(obj) )? //? [ ['name','amz'], ['age', 23] ]

目前就火狐和谷歌實現(xiàn)淡诗,別的瀏覽器都不兼容

Object.getOwnPropertyDescriptor() 返回對象上一個自有屬性的屬性描述符(特性)就是可不可以修改 可以不可以枚舉那些東東?

let obj = {a: 2}

let d = Object.getOwnPropertyDescriptor(obj, 'a')

d // {value: 2, writable: true, enumerable: true, configurable: true}

Object.getOwnPropertyDescriptors() 獲取對象所有自身屬性的描述符(特性)

var obj = {a: 1,b: 2}

var o = Object.getOwnPropertyDescriptors(obj)

o //{{value: 1, writable: true, enumerable: true, configurable: true},{value: 2, writable: true, enumerable: true, configurable: true}}

Object.getOwnPropertyNames() 返回由對象所有的自身屬性名組成的數(shù)組

var obj = {a: 1}

obj.b = 2

Object.getOwnpropertyNames(obj) ?// ['a','b']

Object.getPrototypeOf() 返回指定對象的原型

let proto = {}

let obj = Object.create(proto)

Object.getprototypeOf(obj) === proto

Object.is()? 傳2參 判斷2參是否相等 于 === 區(qū)別在于 is會讓NaN和NaN相等 +0 -0 不想等,=== 是+0 -0 相等,NaN和NaN不想等


Object.preventExtensions() 讓一個對象不可擴(kuò)展伊履,永遠(yuǎn)不能添加新屬性 但是可以刪除已有屬性


Object.isExtensble()判斷一個對象是否可擴(kuò)展韩容,也就是可以添加新屬性不?

var obj = {}? ? Object.isExtensble(obj) //true ? 可以添加新屬性

Object.freeze() 凍結(jié)對象 改對象永遠(yuǎn)不變,不可修改不可刪除

var obj = {a: 2}

Object.freeze(obj)

obj.a = 10

console.log(obj.a) // 2 ? 不可以修改的

Object.isFrozen() 判斷一個對象是否被凍結(jié)

let obj = {} ? Object.isFrozen(obj) ?//false ? 未凍結(jié)

Object.seal()可以密封一個對象唐瀑,密封是指不能添加和刪除屬性群凶,不能需改屬性的可枚舉可寫可讀的配置,但可以修改已有屬性的指


Object.isSealed() ?判斷一個對象是否被密封 是密封則返true?


Object.keys() 返回由對象鍵組成的一個數(shù)組 如果傳入值不是對象 則會強(qiáng)制轉(zhuǎn)為對象(在es5之前會報錯哄辣,es2015開始才強(qiáng)制轉(zhuǎn)化為對象)

Object.keys('amz') // ['0','1','2']

Object.keys('[1,2,3]') //['0','1','2']

let obj = {a:'aa',m:'mm',z:'zz'} ?Object.keys(obj) // ['a','m','z']

Object.prototype.hasOwnProperty() 判斷屬性是否存在(自有非繼承屬性)

let o = {a: 1} ?o.hasOwnProperty('a') // true ? ?o.hasOwnProperty('toString') //false

Object.prototype.isprototypeOf() 判斷一個對象是否在另一個對象的原型上

let a = {amz: 1} ? ? ?let b = Object.create(a) ? ? a.isPrototypeOf(b) //true

Object.prototype.propertyIsEnumerbale()判斷一個真身屬性在當(dāng)前對象是否可枚舉

let o = {a: 1} ??

o.propertyIsEnumerable('a') //true

Object.defineProperties(o, {b:{value:2,enumerbale:false}}) ?

o.propertyIsEnumerbale('b') //false

Object.prototype.toLocaleString()方法返回一個該對象的字符串表示 (http://www.reibang.com/p/9f442f0c43b4)這里有詳細(xì)講

let o = {a: 1}? o.toLocaleString() ? //"[object Object]"

Object.prototype.toString() ?返回對象的字符串表示

let o = {a: 1}? o.toString()? //"[object Object]"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末请梢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子力穗,更是在濱河造成了極大的恐慌毅弧,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当窗,死亡現(xiàn)場離奇詭異够坐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)崖面,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門元咙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巫员,你說我怎么就攤上這事庶香。” “怎么了简识?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵赶掖,是天一觀的道長救军。 經(jīng)常有香客問我,道長倘零,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任戳寸,我火速辦了婚禮呈驶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疫鹊。我一直安慰自己袖瞻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布拆吆。 她就那樣靜靜地躺著聋迎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枣耀。 梳的紋絲不亂的頭發(fā)上霉晕,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機(jī)與錄音捞奕,去河邊找鬼牺堰。 笑死,一個胖子當(dāng)著我的面吹牛颅围,可吹牛的內(nèi)容都是我干的伟葫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼院促,長吁一口氣:“原來是場噩夢啊……” “哼筏养!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起常拓,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渐溶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后墩邀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌猛,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年眉睹,在試婚紗的時候發(fā)現(xiàn)自己被綠了荔茬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡竹海,死狀恐怖慕蔚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情斋配,我是刑警寧澤孔飒,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布灌闺,位于F島的核電站,受9級特大地震影響坏瞄,放射性物質(zhì)發(fā)生泄漏桂对。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一鸠匀、第九天 我趴在偏房一處隱蔽的房頂上張望蕉斜。 院中可真熱鬧,春花似錦缀棍、人聲如沸宅此。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽父腕。三九已至,卻和暖如春青瀑,著一層夾襖步出監(jiān)牢的瞬間璧亮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工斥难, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留杜顺,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓蘸炸,卻偏偏與公主長得像躬络,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子搭儒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

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