JavaScript对象基本用法

115 阅读2分钟

声明对象的两种语法

1.对象的定义

无序的数据集合,键值对的集合

2.写法

let obj = {"name":"kevin","age":18;} //"属性名":"属性值";
let obj =  new Object ({"name":"kevin"})

console.log({'name':'kevin','age':18})

3.注意细节

键名是字符串,不是标识符,可以包含任意字符
引号可以省略,省略后只能写标识符
即使省略标识符,键名依然是字符串

读的时候看原型,写的时候只看自身

如何删除对象的属性

1.删除obj的xxx值

delete obj.xxx
delete obj['xxx']

2.不含属性名

'xxx' in obj === false

3.含属性名,但值为undefined

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

4.注意细节

obj.xxx === undefined //不能断定'xxx'是否为obj属性

var obj = {'name':'kevin','age':18}
obj.name = undefined               //只能删除属性值,属性名依在
obj
{'name':undefined,'age':18}

var obj2 = {'name':'kevin','age':18}
delete obj2.name             //属性不在
obj2
{'age':18}

如何查看对象的属性 (读)

1.查看自身所有属性

Object.keys(obj)
console.dir(obj) //目录形式

2.判断一个属性是自身还是共有的

obj.hasOwnProperty('toString')
//false 有 //true 无

3.查看单独属性

obj['key'] //字符串
obj.key    //字符串
obj[key]   //变量

4.示例情况

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__???__)
}
//使person的属性全部打印出,应用console.log(person[name])

如何修改或增加对象的属性 (写)

1.直接赋值

let obj = {name: 'frank'} // name是字符串
obj.name = 'frank' // name是字符串
obj['name'] = 'frank' 
obj['na'+'me'] = 'frank'
错误示例 obj[name] = 'frank' //name值不确定

let key = 'name'
obj[key] = 'frank'

let key = 'name'
错误示例obj.key = 'frank' //obj.key等价obj['key']

2.批量赋值

Object.assign(obj, {age: 18, gender: 'man'})
//所有属性会赋值到obj上

3.修改隐藏属性

let obj = Object.create(common)
obj.name = 'frank'
let obj2 = Object.create(common)
obj2.name = 'jack'
//要改就开始改,中间改会影响性能
//不推荐使用__proto__改
//一般来说,不要修改原型上的属性

'name' in obj和obj.hasOwnProperty('name') 的区别

'name' in obj //false 可能有原型中的属性
obj.hasOwnProperty('name') // false 查询自身属性