声明对象的两种语法
let obj = {'name' : 'frank','age' : 18 }
let obj = new Object({'nane' : 'frank'})
注意:如何用变量做属性名
let a = 'xxx'var obj ={[a] : 123}/这样写[a]。而 a:123则表示key位'a'
如何删除对象的属性
delete obj.xxx或delete obj[‘xxx’]
注意:obj.name = undefined只是删除属性值,属性名还在
‘xxx’ in obj 可以查询这个属性有没有被删除
如何查看对象的属性
中括号语法:obj[‘key’]——-例如obj{‘name’]
点语法:obj.key——-例如obj.name
注意:
obj.name等价于obj[‘name’]———{‘name’]是字符串
obj.name不等价于obj[name]———[name]是变量
如何修改或增加对象的属性
修改或增加属性
直接赋值:
let obj = {'name' : 'frank'}obj.name = 'frank'obj['name'] = 'frank'
批量赋值:
Object.assign(obj,{age : 18,name : 'frank'})
修改或增加共有属性
无法通过自身修改或增加共用属性
let obj ={}let obj2 = {}obj.toString = 'xxx'//得出的结果,obj的toString变成了xxx,但是obj2的还在原型上。只改变了自身的toString
偏要修改或增加原型上的属性
obj.__proto__.toString = 'xxx'//不推荐使用Object.prototype.toString = 'xxx'//使用这种但是,一般不推荐修改原型,会引发很多问题
修改隐藏属性
不推荐使用
let obj = {'name' : 'frank'}let common = {kind : 'human'}obj.__proto__ = common
推荐使用
let obj = Object.create(common)//创建以common为原型的objobj.name = 'frank'//往obj里面加东西
