JS對象基本用法

聲明對象的兩種語法

let obj = {
  'name' :  '這是一個對象'
}
let obj = new Object({
  'name' : '這是一個對象'
})

1. key是字符串的情況:
key是字符串,上面的例子中name就是那個key,哪怕我沒寫引號,它也會自動變成字符串。
在沒有加引號的情況下,如果key的值是可以計(jì)算的,它會先計(jì)算然后再轉(zhuǎn)為字符串。這很煩,所以如果不是必須的,一定要記得給key加引號。
2. key是變量的情況:

let a = "name"
let obj = {
  [a]: '這是一個對象'
}

用中括號把變量名括起來就可以了,這樣就會先計(jì)算括號里的變量值
3. key是symbol的情況:

let a = Symbol()
let obj = {
  [a]: '這是一個對象'
}

如何刪除對象的屬性

let 教室 = {
  '學(xué)生': 45,
  '老師': 1,
  '課桌':true,
  '凳子' : true,
  '窗戶': true,
  '優(yōu)秀班級': false,
}

刪除學(xué)生、老師、優(yōu)秀班級屬性

教室.學(xué)生 = undefined//刪除屬性值
delete 教室.老師//刪除屬性
delete 教室.優(yōu)秀班級//刪除屬性

如何查看對象的屬性

Object.keys(教室)
Object.values(教室)
Object.entries(教室)

如果還需要查看共有屬性可以使用:

console.dir(教室)

或者,直接打印:

console.log(教室.__proto__)

如何判斷屬性是不是對象的:
我們可以用下面這種方法,但是這種方法沒辦法知道這個屬性是對象自己的還是原型

'name' in obj//沒辦法知道這個屬性是自己的還是原型的

hasOwnProperty()方法可以幫助判斷這個屬性是不是對象自己的:

教室.hasOwnProperty('toString')

查看單個屬性值

教室.學(xué)生
教室['老師']

如何修改或增加對象的屬性

  1. 通過取值的方式直接賦值
教室.優(yōu)秀班級 = false
教室['優(yōu)秀班級'] = true
  1. 批量賦值
Object.assign(教室,{掃帚:true,拖把:true,水桶:true})
  1. 共有屬性能改么?
教室.toString = "修改1?"

”沒有修改”,讀的時候可以讀到共有屬性,但是寫的時候只能寫在自己身上。
實(shí)在想改,就要去原型上改:

我.__proto__.toString = "修改2?"

"修改成功,但不推薦"!

'name' in obj和obj.hasOwnProperty('name') 的區(qū)別

  1. hasOwnProperty 方法用于判斷對象“自身”是否有某個屬性:
  2. in 用于判斷對象“自身”及其“繼承對象”是否具有某個屬性:
 let  obj = {a:1,b:2};

控制臺查看:

   ![image](https://upload-images.jianshu.io/upload_images/14783117-40b208dad3f0ebda?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
obj.hasOwnProperty('__proto__')     // false
obj.hasOwnProperty('valueOf')       // false
'__proto__'  in  obj             // true
'valueOf' in obj         // true

應(yīng)用:
可以判斷一些新屬性和方法是否支持:如下

  1. 想判斷瀏覽器是否支持“proto"屬性 // ‘proto’ in {}
    2.判斷瀏覽器是否支持“bind”方法 // "bind" in new Function()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 聲明對象的兩種語法 1. key是字符串的情況: key是字符串,上面的例子中name就是那個key,哪怕我沒寫引...
    散步未歸閱讀 491評論 0 1
  • 定義 無序的 鍵(key)值(value)對組合 聲明對象的方式 中括號語法:obj['key']----推薦點(diǎn)語...
    張德瘦嬢嬢閱讀 271評論 0 0
  • 對象 定義 無序的數(shù)據(jù)結(jié)婚 鍵值對的集合 寫法 * let obj = { 'name' : 'rain' , '...
    TheTwoWorld閱讀 193評論 0 0
  • 與JS相關(guān)的七種數(shù)據(jù)類型以及五個falsy值 七種數(shù)據(jù)類型 : number、string、bool、symbol...
    云卷云舒聽雨聲閱讀 213評論 0 0
  • 一、聲明對象的兩種語法 注意:屬性名:每個key都是對象的屬性名屬性值:每個value都是對象的屬性值 key是字...
    快到碗里閱讀 140評論 0 0

友情鏈接更多精彩內(nèi)容