对象定义
-
无序的数据集合
-
键值对的集合
声明对象的语法
语法:两种声明方式
let obj = {'name':'Jack','age':18} //方式一
let obj = new Object({'name':'Jack'}) //方式二
注意:键名是字符串,不是标识符,可以包含任意字符;引号可省略,省略之后就只能写标识符了。
- 没有数字键名!!键名是字符串!!
细节:
-
用Object.keys(obj)可以打印出obj的所有key。
-
如果想用变量的值作为属性名,用中括号[]扩起来,例如:
let a = 'xxx' let obj = { [a]:1111 //打印obj,结果为:{xxx:1111} }
//写法等同于 let a = 'xxx' let obj = {} obj[a] = 1111
如何删除对象的属性
语法:删除obj的xxx属性
delete obj.xxx
//或者
delete obj['xxx']
-
如何判断一个属性名是否在这个对象中?
'xxx' in obj
-
含有属性名但是值为undefined?
'xxx' in obj && obj.xxx ==== undefined
-
不能通过obj.xxx ==== undefined断定'xxx'是否为obj的属性
如何查看对象的属性
1. 查看自身所有属性
Object.keys(obj) //查看所有的key
Object.values(obj) //查看所有的value
Object.entries(obj) //查看所有的key和value
2. 查看自身+共有属性
console.dir(obj)
或者依次使用Object.keys(obj)打印出obj.__proto__
3. 判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')
4. 查看属性
obj['key'] //中括号语法
obj.key //点语法
如何修改或增加对象的属性
1. 批量赋值
Object.assign(obj,{age:18,gender:'man'})//理解为向对象obj中增加属性age、gender及对应值
2. 直接赋值
let obj = {name:'Jack',age:18} //name是字符串
//方式一:直接修改name值
obj.name = 'Tom'
obj['name'] = 'Tom'
obj['na'+'me'] = 'Tom'
//方式二:先声明一个变量,再通过中括号把变量名括起来
let key = 'name'
obj.[key] = 'Tom' //等价于obj.['name'] = 'Tom'
//增加性别属性值和属性名
obj.gender = 'man'
3.修改或增加共有属性
- 无法通过自身修改或增加共有属性
- 如果一定要修改共有属性,推荐写法:Object.prototype.toString = 'xxx'
不推荐使用:obj.__proto__.toString = 'xxx'
4. 修改隐藏属性
-
推荐使用Object.create()
let common = {Nationality:'China',Color:'black'} let obj = Object.create(common) obj.name = 'Tom' Object.assign(obj,{name:'Tom',age:18})
细节:'name' in obj和obj.hasOwnProperty('name') 的区别
区别是:
- 'name' in obj 不能判断name这个属性是对象obj的自有属性还是原型中共有属性,只能判断属性名name是否在obj这个对象中
- obj.hasOwnProperty('name') 可以判断name属性是否是对象obj的共有属性
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!