聲明方式:es6
let obj = new Object();
let obj = { };
Object.keys (obj)
:能夠獲得obj的全部屬性名let a='name' var obj = { a: jack; //屬性名爲'a'} var obj2 = { [a]: jack; //屬性名爲'name'}
delete obj.xxx
:刪除obj中的xxx屬性'xxx' in obj
:若xxx在obj中返回true,不然返回falseobj.xxx === undefined
prototype
Object.keys(obj)
:查看自身全部屬性名code
Object.values(obj)
:查看自身全部屬性值Object.entries(obj)
:查看全部屬性和值console.dir(obj)
:以目錄形式查看自身+共有屬性obj.hasOwnProperty('xxx')
查看屬性對象
obj.xxx
obj['xxx']
:與第一種等價obj[xxx]
:xxx爲變量,與上述兩種徹底無關一道代碼題區分開上述三種狀況:字符串
let list = ['name', 'age', 'gender'] let person = { name: 'frank', age: 18, gender: 'man' } for (let i = 0; i < list.length; i++) { let name = list[i] console.log(???) // 這裏 ??? 替換成什麼使person全部屬性被打印出來 } // 1.console.log(person.name) 2.console.log(person[name]) // 答案:console.log(person[name])
obj.name="xxx"
;//es6新增語法,推薦使用 Object.assign(obj,{ name: xxx, age: xxx , gender: xxx })
沒法經過自身修改或修改原型:原型
obj.toString='xxx'
;只會做用在obj自身屬性上修改原型:console
Object.prototype
將一個對象的原型設置爲另外一個對象:變量
let obj2.__proto__ = obj
(不推薦)let obj2 = Object.create( obj )
:推薦,es6新寫法,效果等同於第一種、'x' in obj
和obj.hasOwnProperty('x')
的區別:語法
'xxx' in obj
只能檢查xxx是否在obj中而沒法區分是不是自身屬性// a中的name爲原型中的屬性 var a = Object.create ({ name: 'A' }); //b中的name爲自身的屬性 var b = new Object ({ name:'A' })