es6记录之三——对象的属性名表达式

JavaScript 定义对象的属性,有两种方法。

// 方法一
obj.foo = true;

// 方法二
obj[‘a‘ + ‘bc‘] = 123;

上面代码的方法一是直接用标识符作为属性名,方法二是用表达式作为属性名,这时要将表达式放在方括号之内。

但是,如果使用字面量方式定义对象(使用大括号),在 ES5 中只能使用方法一(标识符)定义属性。

var obj = {
  foo: true,
  abc: 123
};

ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。

let propKey = ‘foo‘;

let obj = {
  [propKey]: true,
  [‘a‘ + ‘bc‘]: 123
};

注意,属性名表达式与简洁表示法,不能同时使用,会报错。

// 报错
const foo = ‘bar‘;
const bar = ‘abc‘;
const baz = { [foo] };

// 正确
const foo = ‘bar‘;
const baz = { [foo]: ‘abc‘};

(以上为ECMAScript 6 入门原文)

原文地址:https://www.cnblogs.com/zhengshihui/p/10354762.html

时间: 2024-08-28 15:31:28

es6记录之三——对象的属性名表达式的相关文章

记录,javascript中对象的属性名是字符串,却可以不用引号

问题描述:今日看书,里面介绍js的对象的属性名是包括空字符串在内的所以字符串 问题来了,我们平时定义的对象如下,是没有引号""or’'的 var someone  = {    first_name : “Jeo”,    second_name : “Mike”}; 所以我写了以下程序测试, var stooge = {    “first_name” : “Jeo”,    “second_name” : “Mike”};var copy = {    first_name : “

js 把对象按照属性名的字母顺序进行排列

var obj = {name: "zhangsan", age: 8, ace: 5, nbme: "lisi"};//要排序的对象function objKeySort(obj) {//排序的函数 var newkey = Object.keys(obj).sort(); //先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组 var newObj = {};//创建一个

js中对象的属性名和属性值

代码 /** * 对象的属性名 * - 对象的属性名不强制遵循标识符的命名规范,可以是任意的名字,但在开发中 * 尽量遵循标识符的命名规范 */ // 创建对象obj1 var obj1 = new Object(); // 添加属性name obj1.name = "唐僧"; console.log(obj1); // {name: "唐僧"} /** * 如果要使用特殊的属性名,不能采用"."的方式来操作,需要使用另一种 * 方式: * 语法

php : 获取对象的属性名

方案有多种: 一. 使用 get_object_vars() 方法 缺点: 只能显示 public 的 //只显示public的 var_dump(get_object_vars($test)); 处理: 在类中定义一个public 的方法, 外部对象调用即可显示所有属性(除了静态属性之外) function showAllProperties2(){ var_dump(get_object_vars($this)); } 二. 使用ReflectionClass类 能够获取所有的属性名 //显

241 获取对象的属性名:Object.keys(对象)

Object.keys(对象) :获取到当前对象中的属性名 ,返回值是有元素为字符串的一个数组,效果类似 for-in. <script> // 用于获取对象自身所有的属性 var obj = { id: 1, pname: '小米', price: 1999, num: 2000 }; var arr = Object.keys(obj); console.log(arr); // ["id", "pname", "price",

javascript的json对象中属性名使用uuid

例如: var a={848b2300c37b4cddb9c633fccb566e5c:"123"}; 浏览器会报错,大至意思是848b2300c37b4cddb9c633fccb566e5c不是一个合法的属性名. 看了半天也没看出什么来,是长度太长?非法字符? json官网上好像也没说这种不可以啊. 后来搜了一下javascript的变量命名规则,在javascript里变量的名称不能是数字开头,在uuid前面加一个字符就可以了,比如: var a={_848b2300c37b4cd

JS遍历对象修改属性名

根据接口返回数据中number属性值,对数据进行截取,并改变属性名.直接上码: 下面是需要处理的数据 let data={"minValue":7400, "maxValue":"18500", "value":{ "value":[ {"dmdDate":"2019-05","dmdAppValue":"9999"}, {&q

使用变量作为js对象的属性名

<script> var test={aa:12,bb:34};//或者var test={}; var cc= "acqId" test[cc]=12; alert(test.cc) </script> 使用场景 function objectTest() { var test = { aa: 12, bb: 34 }; var cc = "acqId" test[cc] = 12; $.ajax({ url: xxx/getReslut.

js对象属性名驼峰式转下划线

一.题目示例: 思路: 1.匹配属性名字符串中的大写字母和数字 2.通过匹配后的lastIndex属性获取匹配到的大写字母和数字的位置 3.判断大写字母的位置是否为首位置以及lastIndex是否为0,为0则表示匹配结束 4.将存放位置的数组进行从小到大排序,排序后将属性名按照字符串的slice方法切割并使用下划线重组 5.遍历对象的属性名并使用函数改变为新的命名,从新赋值到新的对象上(也可以使用改变对象的ES6新语法) 6.注意,每次在调用函数后,需要清空之前存放位置的数组 二.实现代码 le