JS对象基本用法

154 阅读2分钟

对象

对象就是无序的数据集合,键值对的集合。写法为let obj={'name':'frank','age':18},注意键名是字符串,不是标识符,就算引号省略也是字符串。也可以用变量做属性命,例:

let p1='name'
let obj ={[p1]:'frank'}

不加[]的属性名会自动变成字符串,反之加了[]会当成变量求值。

对象的隐藏属性

每个对象都有一个隐藏属性,这个隐藏属性储存着其共有属性的地址,这个共有属性组成的对象叫做原型,即隐藏属性储存着原型的地址。对象的原型也有原型是null,使用命令Object.prototype.__proto__查看。

对象的增删改查

删除属性

delete obj.xxx或者delete obj['xxx']删除属性,判断一个对象里面是否含有属性使用'xxx'in objobj.xxx====undefined不能断定'xxx'是否为obj的属性。

读属性

使用Object.keys(obj)查看对象obj的自身属性,要查看obj对象自身属性和共有属性使用命令console.dir(obj),判断一个属性是其自身的还是共有的,使用obj.hasownproperty()

查看属性

查看属性的语法有obj['key']或obj.key,注意区分obj.name等价于obj['name']并不等价于obj[name]

修改或增加属性

  1. 修改或增加一般属性 具体例子解释说明
let obj={'name':'xxx'}
obj.name='xxx'
obj['name']='xxx'
obj['na'+'me']='xxx'
let key='name'  obj[key]='xxx'
批量修改 Object.assign(obj,{age:18,gender:'man'})
  1. 修改或增加共有属性

无法通过自身修改或增加共有属性。例:

let obj={} let obj2={} //共有toString
obj.toString='xxx'//只会修改`obj`自身属性
obj2.toString还是在原型上。

如果硬要修改或增加原型上的属性,也是有办法的

obj.__proto__.toString='xxx'(不推荐)

Object.prototye.toString='xxx'

  1. 修改隐藏属性 例:
let obj={name:'xxx'}
let obj2={name:'yyy'}
let common={kind:'human'}
obj.__proto__=common
obj2.__ptoto__=common
```这种用法不推荐
下面为推荐用法
`let obj=Object.creat(common)`至于`obj`属性后面在添加就可以了.