声明方式: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' })