如何通将变量的值作为对象的属性名(可计算属性名)

问题: 有时候,我们需要将一个变量的值作为一个对象的属性名,这时候使用 obj. 这种形式就不行了,如下:

let obj = {};
let str = "key";

// 这里我们想根据str的值来作为obj的属性名,即 obj.key
// 如下,如果直接使用obj.str肯定是不行的,这样直接就是给obj对象一个str的属性名了
obj.str = '这个属性名是str';
console.log(obj.str)  // 这个属性名是str

// 正确方法有两个,都需要使用 [],一个是对对象使用[]赋值
obj[str]= '这个属性名是key了';

// 另外就是在创建对象时,使用[] 设置属性名
obj = {
	[str]:"这个属性名也是key"
}

还有一种比较常见的情况是对象里面的属性名是数字时,这时候直接使用打点的形式是会报错的,如下图:
报错
这时候就需要使用中括号了,如下:
在这里插入图片描述

扩展: 如果要访问 对象 中 a 位置上的值,我们需要使用 . 操作符或者 [] 操作符。.a 语法通
常被称为“属性访问”,[“a”] 语法通常被称为“键访问”。实际上它们访问的是同一个位置;这两种语法的主要区别在于 . 操作符要求属性名满足标识符的命名规范,而 ["…"] 语法可以接受任意 UTF-8/Unicode 字符串作为属性名。此外,由于 ["…"] 语法使用字符串来访问属性,所以可以在程序中构造这个字符串(即通过一个变量取值,或者也可以进行操作)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值