JS对象基本用法

对象的定义

  1. 无序的数据集合
  2. 键值对的集合

一、声明对象的两种语法

let obj = {'name' : name, 'age': 16}
let obj = new Object({'name' : name, 'age': 16})
// 键名是字符串,无论是否有引号;
// 引号省略后键名只能是标识符;
// 变量做属性名
let p1 = 'name';
let obj = {p1: 'ha'}  // 属性名为p1
let obj = {[p1]: 'ha'}  // 属性名为name

二、如何删除对象的属性

// 以下两种方式均可删除obj的xxx属性
delete obj.xxx 
delete obj['xxx']
// 不含属性名
'xxx' in obj === false 
// 含属性名但值为undefined
'xxx' in obj && obj.xxx === undefined
// 注意值为undefined并不能证明xxx是obj的属性
obj.xxx === undefined

三、如何查看对象的属性

// 查看自身所有属性
Object.keys(obj)
// 查看自身+共有属性
console.dir(obj)
// 判断一个属性是否是自身属性
obj.hasOwnProperty('属性名')
// 注意区分hasOwnProperty为判断是否为自身属性,不包括共有属性;而'xxx' in obj 判断此对象是否有此属性名,包括共有属性;
// 查看单个属性值
obj['key']
obj.key  // 此属性名是字符串
obj[key]  // 注意,此处key代表变量key的值

四、如何修改或增加对象的属性

obj.name = '2'  // 如无name属性,则增加;如已有,则修改name的值为2;
Object.assign(obj, {age: 1, gender: 'man'})  // 批量赋值,规则同上;
// 无法通过自身修改或增加共有属性,如下:
let obj = {}, obj2 = {}  // 共有toString属性
obj.'toString' = 'xxx'  // 只会将自身的toString属性修改
obj2.toString // 还是在原型上
// 如果需要修改或增加原型属性,可通过下面的方式,但一般不要修改原型
obj.__proto__.toString ='xxx'  // 不推荐用__proto__
Object.prototype.toString = 'xxx'
// 修改隐藏属性
// 不推荐属于__proto__
let obj = {}, obj2 = {}
let common = {kind:'human'}
obj.__proto__ = common
obj2.__proto__ = common
// 推荐使用Object.create,即在开始就规范好
let obj = Object.create(common)
obj.name = '1'
let obj2 = Object.create(common)
obj2.name = '2'
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:00
点赞 评论 收藏
分享
牛客83700679...:简历抄别人的,然后再投,有反馈就是简历不行,没反馈就是学历不行,多投多改只要技术不差机会总会有的
点赞 评论 收藏
分享
找个工作 学历是要卡的 要求是高的 技能不足是真的 实习经验是0的 简历无处可写是事实的 钱不好赚是真的 想躺平又不敢躺 也不甘心躺 怕自己的灵感和才华被掩埋甚至从未被自己发现 又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务