JS 对象基本用法

2022-07-15  本文已影响0人  饥人谷_折纸大师

我们已经知道JS的七种数据类型分别是:number数字、'字符串'、布尔bool、符号symbol、空undefined、空null以及对象object。今天来总结一下有关对象object的基本用法。

对象object

对象是JS七种数据类型中唯一一种复杂的数据类型。

定义

对象是无序数据或者键值对的集合。

写法

声明方法如下:

let obj = { 'name': 'Peter', 'age': 18 }//第一种写法
let obj2 = new Object({ 'name': 'Peter' })//第二种写法
console.log({ 'name': 'Peter', 'age': 18 })//第三种写法

小细节

let a = 'xxx'
var obj = {
[a]: 22222
}

原型

JS中的每一个对象都有隐藏属性,这个隐藏属性存储着其共有属性组成的对象的地址,这个共有属性组成的对象叫原型。即隐藏属性,存储着原型的地址

每个对象都有原型

对象属性的增删改查

删除属性

写法如下

let obj = { 'name': 'frank', 'age': 18 }
delete obj.name//写法一
delete obj['name']//写法二 他们都是删除了name属性,既删除属性名又删除属性值
不含属性名

‘xxx’ in obj===false

含属性名但是值为undefined

‘xxx’ in obj && obj.xxx===undefined
注意:obj.xxx===undefined不能判断‘xxx’是否为obj的属性

读属性
查看自身所有属性

Object.keys(obj)查看所有属性名
Object.values(obj)查看所有属性值
Object.entries(obj)生成两个数组,分别是属性名和属性值

查看自身以及共有属性

console.dir(obj)以目录的形式打印出来obj的所有属性
或者自己依次用Object.keys打印出obj.__proto__(这种并不推荐 )

判断属性是否存在,但不区分共有属性还是自身属性

'xxx' in obj

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

obj.hasOwnProperty('toString')
返回true则是自身属性,反之则是共有属性

查看单一属性
写属性(修改或增加属性)
直接赋值
let obj = { 'name': 'Peter' }//name是字符串
obj.name = 'Tommy'//name依然是字符 等价于下面一行
obj['name'] = 'Tommy'//也等价于下面一行
obj['na' + 'me'] = 'Tommy'

或者

let key = 'name’; key[name] = 'Peter'//或者声明一个变量,让key等于变量的值再进行赋值
批量赋值

批量赋值是ES6新增的一个语法
Object.assign(obj, { age: 18, gender: ‘man' })一个赋值API,先写给谁赋值,然后写赋值内容

修改或增加共有属性

一般来说,无法通过自身修改或增加来改变共有属性。
如果硬要修改,则有以下办法

obj.__proto__.toString = 'xxx'//这种不推荐
Object.prototype.toString = 'xxx'

一般来说,不要修改原型,会引发很多问题
修改隐藏属性,推荐用Object.create()
在创建之初,就声明好原型

let common = { 'kind': 'human' }
let obj = Object.create(common)//指定以common为原型
obj.name = 'Peter'
let obj2 = Object.create(common)
obj2.name = 'Tommy'

最后解答一个问题:'name' in objobj.hasOwnProperty('name') 的区别

上一篇 下一篇

猜你喜欢

热点阅读