2020-08-14 26課 JS對(duì)象

聲明對(duì)象的兩種語(yǔ)法

let obj = { 'name': 'kong', 'age': 22}  // 簡(jiǎn)寫(xiě)
let obj = new Object({'name': 'kong'})  // 標(biāo)準(zhǔn)寫(xiě)法

如何刪除對(duì)象的屬性

delete
刪除屬性名和屬性值

delete obj.xxx
delete obj['xxx']
image.png

不含屬性名

'xxx' in obj === false

含屬性名但值為 undefined

'xxx' in obj && obj.xxx === undefined

obj.xxx = undefined 不能斷定 xxx 是否為 obj 的屬性胞四!

僅僅刪除屬性值

image.png

如何查看對(duì)象的屬性

查看自身所有屬性
Object.keys(obj)

查看自身+共有屬性
console.dir(obj)

判斷一個(gè)屬性是自身還是共有的
obj.hasOwnProperty('toString')

inhasOwnProperty 區(qū)別
in不能識(shí)別屬性是來(lái)自對(duì)象自身的還是來(lái)自原型。

var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true

hasOwnProperty 表示該對(duì)象自身是否具有該屬性氓侧。

var obj = {
  p: 123
};
obj.hasOwnProperty('p') // true
obj.hasOwnProperty('toString') // false

讀取屬性的兩種寫(xiě)法

obj.key
obj['key']

注意 obj[key]變量key值一般不為 'key'(坑人語(yǔ)法)

obj.name
// 等價(jià)于 obj['name']
let name = 'kong'
// obj[name] 等價(jià)于 obj['kong'] 而不是obj['name']和obj.name

如何修改或增加對(duì)象的屬性

  • 直接賦值
let obj = {name: 'frank'} // name是字符串
obj.name = 'frank' // name字符串
obj['name'] = 'frank'
obj['na'+'me'] = 'frank'
let key = 'name'; obj[key] = 'frank'

obj[name] = 'frank' // 錯(cuò)誤寫(xiě)法约巷,因?yàn)閚ame的值不確定
let key = 'name';obj.key = 'frank' // 錯(cuò)誤寫(xiě)法。因?yàn)閛bj.key等價(jià)于obj['key']
  • 批量賦值
Object.assign(obj, {age: 22, gender: 'man'})
  • 修改或增加共有屬性

    注:無(wú)法通過(guò)自身修改或增加共有屬性

let obj = {}, obj2 = {} // 共有 toString
obj.toString = 'xxx'  // 只會(huì)在改 obj 自身屬性
obj2.toString  // 還是在原型上
  • 偏要修改或增加原型上的屬性
obj.__proto__.toString = 'xxx' // 不推薦用 __proto__
Object.prototype.toString = 'xxx' 
// 不要修改原型踩麦,會(huì)引起很多問(wèn)題
  • 修改隱藏屬性

不推薦使用proto

let obj = {name:'kong'}
let obj2 = {name: 'jerry'}
let common = {kind: 'human'}
obj.__proto__ = common
obj2.__proto__ = common

使用 Object.create

let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'jack'
// 要改就一開(kāi)始就改氓癌,別后來(lái)再改

對(duì)象的隱藏屬性

隱藏屬性

  1. JS每一個(gè)對(duì)象都有一個(gè)隱藏屬性
  2. 這個(gè)隱藏屬性存儲(chǔ)著其共有屬性組成的****對(duì)象的地址
  3. 這個(gè)共有屬性組成的對(duì)象叫做原型
  4. 隱藏屬性存儲(chǔ)著原型的地址
var obj = {}
obj.toString()  //不報(bào)錯(cuò)
 // 因?yàn)閛bj的隱藏屬性對(duì)應(yīng)的對(duì)象上有toString</pre>
image.png

原型

每個(gè)對(duì)象都有原型

  1. 原型里存著對(duì)象的共有屬性
  2. 比如obj的原型就是一個(gè)對(duì)象
  3. obj.__proto__存著這個(gè)對(duì)象的地址
  4. 這個(gè)對(duì)象里有toString/constructor/valueOf等屬性
image.png

對(duì)象的原型也是對(duì)象

  1. 所以對(duì)象的原型也有原型
  2. obj = {} 的原型就是所有對(duì)象的原型
  3. 這個(gè)原型包含所有對(duì)象的共有屬性反粥,是對(duì)象的根
  4. 這個(gè)原型也有原型疲迂,原型就是 null

image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尤蒿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子优质,更是在濱河造成了極大的恐慌,老刑警劉巖演怎,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件避乏,死亡現(xiàn)場(chǎng)離奇詭異拍皮,居然都是意外死亡歹叮,警方通過(guò)查閱死者的電腦和手機(jī)铆帽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門爹橱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人慰技,你說(shuō)我怎么就攤上這事∥巧蹋” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蚯舱,是天一觀的道長(zhǎng)掩蛤。 經(jīng)常有香客問(wèn)我陈肛,道長(zhǎng),這世上最難降的妖魔是什么阳藻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任谈撒,我火速辦了婚禮啃匿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溯乒。我一直安慰自己,他們只是感情好矛纹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布光稼。 她就那樣靜靜地躺著,像睡著了一般采够。 火紅的嫁衣襯著肌膚如雪冰垄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天冀瓦,我揣著相機(jī)與錄音,去河邊找鬼翼闽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛尼啡,可吹牛的內(nèi)容都是我干的询微。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼书聚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼藻雌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胯杭,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤做个,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后居暖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體膝但,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年莺奸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冀宴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甚疟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轧拄,到底是詐尸還是另有隱情讽膏,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布俐末,位于F島的核電站奄侠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏垄潮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涂召。 院中可真熱鬧敏沉,春花似錦果正、人聲如沸盟迟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辖众。三九已至,卻和暖如春戏阅,著一層夾襖步出監(jiān)牢的瞬間啤它,已是汗流浹背舱痘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工离赫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铝耻。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓蹬刷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親泡态。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345