我是靠谱客的博主 繁荣苗条,这篇文章主要介绍对象在es6中的扩展1、属性的简洁表示法2 属性名表达式 3、Object.keys(),Object.values(),Object.entries(),现在分享给大家,希望可以做个参考。
1、属性的简洁表示法
ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
复制代码
1
2
3
4
5const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo};
上面代码中,变量foo
直接写在大括号里面。这时,属性名就是变量名, 属性值就是变量值。下面是另一个例子。
复制代码
1
2
3
4
5
6
7
8function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2}
复制代码
1
2
3
4
5
6
7
8
9
10
11const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } };
下面是一个实际的例子。
复制代码
1
2
3
4
5
6
7
8let birth = '2000/01/01'; const Person = { name: '张三', //等同于birth: birth birth, // 等同于hello: function ()... hello() { console.log('我的名字是', this.name); } };
这种写法用于函数的返回值,将会非常方便。
复制代码
1
2
3
4
5
6
7function getPoint() { const x = 1; const y = 10; return {x, y}; } getPoint() // {x:1, y:10}
CommonJS 模块输出一组变量,就非常合适使用简洁写法。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17let ms = {}; function getItem (key) { return key in ms ? ms[key] : null; } function setItem (key, value) { ms[key] = value; } function clear () { ms = {}; } module.exports = { getItem, setItem, clear }; // 等同于 module.exports = { getItem: getItem, setItem: setItem, clear: clear };
2 属性名表达式
JavaScript 定义对象的属性,有两种方法。
复制代码
1
2
3
4// 方法一 obj.foo = true; // 方法二 obj['a' + 'bc'] = 123;
上面代码的方法一是直接用标识符作为属性名,方法二是用表达式作为属性名,这时要将表达式放在方括号之内。
但是,如果使用字面量方式定义对象(使用大括号),在 ES5 中只能使用方法一(标识符)定义属性。
复制代码
1
2
3
4var obj = { foo: true, abc: 123 };
ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。
复制代码
1
2
3
4
5let propKey = 'foo'; let obj = { [propKey]: true, ['a' + 'bc']: 123 };
下面是另一个例子。
复制代码
1
2
3
4
5
6
7
8let lastWord = 'last word'; const a = { 'first word': 'hello', [lastWord]: 'world' }; a['first word'] // "hello" a[lastWord] // "world" a['last word'] // "world"
表达式还可以用于定义方法名。
复制代码
1
2
3
4
5
6let obj = { ['h' + 'ello']() { return 'hi'; } }; obj.hello() // hi
注意,属性名表达式与简洁表示法,不能同时使用,会报错。
复制代码
1
2
3
4
5
6
7// 报错 const foo = 'bar'; const bar = 'abc'; const baz = { [foo] }; // 正确 const foo = 'bar'; const baz = { [foo]: 'abc'};
3、Object.keys(),Object.values(),Object.entries()
Object.keys()
ES5 引入了Object.keys
方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。
复制代码
1
2
3var obj = { foo: 'bar', baz: 42 }; Object.keys(obj) // ["foo", "baz"]
S2017 引入了跟Object.keys
配套的Object.values
和Object.entries
,作为遍历一个对象的补充手段,供for...of
循环使用。
复制代码
1
2
3
4
5
6
7
8
9
10
11let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { console.log(key); // 'a', 'b', 'c' } for (let value of values(obj)) { console.log(value); // 1, 2, 3 } for (let [key, value] of entries(obj)) { console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3] }
最后
以上就是繁荣苗条最近收集整理的关于对象在es6中的扩展1、属性的简洁表示法2 属性名表达式 3、Object.keys(),Object.values(),Object.entries()的全部内容,更多相关对象在es6中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复