js 获取中括号里面字符串_JS对象基本用法

七种数据类型:number string bool symbol (四基) null undefined (两空) object (对象)

五个falsy值:null undefined NaN 0 ''(空字符串)

声明对象的两种语法

对象

定义:

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

写法:

let 

细节:

  • 键名是字符串,不是标识符,可以包含任意字符
  • 引号可省略,省略之后就只能写标识符(标识符规则:不能以数字开头)
  • 就算引号省略了,键名也还是字符串(重要)

奇怪的属性名

所有属性名会自动变成字符串

let 

细节:

Object,keys(obj)可以得到obj的所有key

变量作属性名:

如何用变量作属性名

let 

对比:

变量的值要作为key,就需要将变量用[]括起来

不加[]的属性名会自动变成字符串

加了[]则会当做变量求值

值如果不是字符串,则会自动变成字符串

对象的隐藏属性

隐藏属性

  • JS中每一个对象都有一个隐藏属性
  • 这个隐藏属性存储着其共有属性组成的对象的地址
  • 这个共有属性组成的对象叫做原型
  • 也就是说,隐藏属性存储着原型的地址

代码示例

var 

如何删除对象的属性

删除属性

delete http://obj.xxx或delete obj['xxx']

即可删除obj的xxx属性

注意区分属性值为undefined和不含属性名

不含属性名

'xxx' in obj === false

含有属性名,但是值为undefined

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

注意obj.xxx===undefined(只能判定xxx的属性值,不能判断属性名)

不能断定'xxx'是否为obj的属性


如何查看对象的属性

查看自身所有属性

Object.keys(obj)

查看自身+共有属性

  • console.dir(obj)
  • 或者自己依次用Object.keys打印出obj._proto__

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

obj,hasOwnProperty('toString')

原型

每个对象都有原型

  • 原型里存着对象的共有属性
  • 比如obj的原型就是一个对象
  • obj._proto__存着这个对象的地址
  • 这个对象里有toString/constructor.valueOf等属性

对象的原型也是对象

  • 所以对象的原型也有原型
  • obj={}的原型即为所有对象的原型
  • 这个原型包含所有对象的共有属性是对象的根
  • 这个原型也有原型,是null

f6ffdfa81f04a9cf3812f8fd6e041c93.png
举例,可以看出__proto__是在obj.__proto__中的,只不过原型的原型是null

查看属性

两种方法查看属性

  • 中括号语法:obj['key']
  • 点语法:obj.key
  • 坑新人语法:obj[key]//变量key值一般不为'key'

请优先使用中括号语法

  • 点语法会误导你,让你以为key不是字符串
  • 等你确定不会弄混两种语法,再改用点语法

0a211c72860c85013c83bb33f0e0e999.png

60eba4224abd70081f58cab305d24940.png

e1f885217c9ff78ce7f33e41ba22b411.png
答案为2 1中的name知识字符串,而2中的name则是哥变量,是会根据list[i]变成‘name’'age' 'gender'

log的返回值永远是undefined


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

直接赋值

b1a448855717939cf90fd27324689957.png
直接赋值

批量复制

Object

78e41242c40b8a3a85e1dfd262d2764e.png
批量赋值举例

修改或增加共有属性

f51e3f9ddf8c683dc2319cf1c8f886ca.png
修改原型会有很大的影响

修改隐藏属性

620edb902232fa993bb4fb94075e28e9.png
推荐一创建就改变原型

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

in 是查看是否有这个属性,但是无法知道是自己特有的,还是共有的

hasOwnProperty可以查看到底是不是自己特有的


总结

832daa380eb3fbf155bef288b7499c38.png

43a66f9f9ad1e160909709449be487c3.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值