js对象基本用法

1.声明对象

  • 定义:无序的数据集合、键值对的集合
  • 写法
var obj = new Object({key:value})
let obj = {key1:value1,key2:value2}
  • 属性名:每个key都是对象的属性名(property)
  • 属性值:每个value都是对象的属性值

特殊的属性名

  • 所有属性名会自动把变成字符串
  • Object.keys(obj) 查看obj的所有key

变量作属性名

不加 []的属性名会自动变成字符串
加了[]则会当作变量求值

let p1 = 'name'
let obj = {p1:'fanison'}
let obj = {[p1]:'fanison'}

对象的隐藏属性

js中每个对象都有隐藏属性
隐藏属性存储着原型的地址

2.删除属性

delete obj.xxx
delete obj['xxx']

通过使用'xxx' in obj 查看obj是否含有xxx属性,发现obj.xxx = undefined 不能删除属性,只是将属性值xxx设置为undefined

注意:obj.xxx === undefined不能断定‘xxx’为obj的属性;
通过'xxx' in obj 查看obj是否含有xxx属性

3.查看属性

  • 查看自身所有属性 Object.keys(obj)
  • 查看自身+共有属性 console.dir(obj)
  • 查看属性 obj['key'] or obj.key

console.log('name')的返回值是 undefined,
obj[console.log('name')]相当于obj["undefined"]

obj.name等价于 obj['name']
obj.name不等于obj[name]

obj.name   //此处name是字符串
obj[name]  //此处name是变量

4.修改属性

  • 直接赋值
    obj['key'] = value or obj.key = valuevalue
  • 批量赋值
    Object.assign(obj,{key:value,key:value})
  • 修改或增加共有属性

无法通过自身修改或增加共有属性
修改或增加原型上属性会引发问题

  • 修改隐藏属性

使用 __proto__ 不推荐
使用Object.create 推荐

不推荐

推荐

'name' in objobj.hasOwnProperty('name')的区别:

  • hasOwnProperty会忽略掉那些从原型链上继承到的属性
  • in不会忽略掉那些从原型链上继承到的属性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 定义 无序的 键(key)值(value)对组合 声明对象的方式 中括号语法:obj['key']----推荐点语...
    张德瘦嬢嬢阅读 1,720评论 0 0
  • 这是一篇对JS对象基本用法的介绍的文章,所有的内容都能在MDN里面找到,我主要是介绍一些常用的知识。JS一共有7种...
    刘泽佳阅读 3,012评论 0 0
  • 6种基本数据类型 null undefined string number boolean symobl 5种fa...
    WlSE阅读 2,325评论 0 0
  • 一、声明对象的两种语法 let obj = { 'name' : 'frank' , 'age' : 18} le...
    浪味仙儿啊阅读 2,990评论 0 2
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,904评论 1 32

友情链接更多精彩内容