js对象基本用法

150 阅读2分钟

1.对象

1.js中对象的定义

(1)无序的数据集合

(2)键值对的集合

2.写法

三种写法

let obj = {"name" : "frank" , "age" : 18}let obj = new Object({"name" : "frank" , "age" : 18})console.log({"name" : "frank" , "age" : 18});

3.细节

属性名是字符串,不是标识符。

如果把引号去掉之后,就只能写标识符了。

就算把引号去掉,属性名还是字符串

4.一些奇怪的属性名

let obj = {
    1:"a",
    3.2:"b",
    1e2:"c",
    1e-2:"d",
    .234:"e",
    0xFF:"d"
}
Object.keys(obj)

输出:["1", "100", "255", "3.2", "0.01", "0.234"]

所有属性名都会变成字符串,

输出顺序,我查了一下,根据v8引擎处理属性来看,先输出整数,其他的就比较复杂了

Object.keys(obj)

可以查obj的所有属性名

5.用变量做属性名

let p = "name"
let obj = {[p] : "frank"}

加上[]即可,如果不加,属性名就是字符串p

6.隐藏属性

  • JS每个对象都有一个隐藏属性
  • 这个隐藏属性储存着共有属性组成的对象的地址
  • 这个共有属性组成的对象叫做原型
  • 也就是所隐藏属性储存着原型的地址

2.对象的增删改查

1.删除属性

(1)删除obj对象里面的xxx属性

delete obj.xxx

delete obj['xxx']

这两种都可以删除原有属性

(2)那么在删除属性之前,怎么查找改对象有没有这个属性呢

'xxx' in obj

如果obj对象含有xxx属性,返回true,反之

obj.xxx === undefined

这个不能判断有没有该属性,有两种可能:没有改属性;又该属性,但值为undefined

(3)判断不含属性名

'xxx' in obj === false

含有属性名,但值为undefined

'xxx' in obj && obj.xxx === undefined

2.查找属性

(1)

查找自身所有属性:

Object.keys(obj)

查找自身和共有的所有属性

console.dir(obj)

查找一个属性是自身的还是共有的,如果是自身的就返回true

obj.hasOwnProperty('toString')

(2)查找单个属性

obj.key
obj['key']

新人推荐使用第二种

3.修改或增加属性

(1)直接赋值

let obj = {name:'frank'}

obj.name = 'frank'

obj['name']='frank'

批量赋值:

Object.assign(obj,{name:'frank',age:18})

(2)修改公共属性

obj.proto.toString = "xxx"

Object.prototype.toString = "xxx"

一般来说,不要修改公共属性

(3)修改隐藏属性

let obj = { name : 'frank' ,age : 18 }

let common = { kind : 'human' }

obj.prototypy = common

不推荐这种写法

let obj = Object.create(common)

Object.assign (obj ,{name : 'frank', age : 18})

先改,在赋值,推荐这种写法

基本同上:已有属性则改;没有属性则增。

总结:

删除属性:delete obj.xxx

查看自身所有属性:Object.keys(obj)

查看是否属于自身属性:obj.hasOwnProperty('toString')

批量赋值:Object.assign(obj , {name : 'frank' , age : 18 } )

改变__proto__:let obj = Object . create(commn)

后面这俩是ES6语法