es6入门-对象的扩展
来源:互联网 发布:鄂州翔天软件 编辑:程序博客网 时间:2024/04/30 12:39
1、属性的简洁表示法
ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。
var foo = 'bar';var baz = {foo};baz // {foo: "bar"}// 等同于var baz = {foo: foo};
上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。
function f(x, y) { return {x, y};}// 等同于function f(x, y) { return {x: x, y: y};}f(1, 2) // Object {x: 1, y: 2}
除了属性简写,方法也可以简写。
var o = { method() { return "Hello!"; }};// 等同于var o = { method: function() { return "Hello!"; }};
下面是一个实际的例子。
var birth = '2000/01/01';var Person = { name: '张三', //等同于birth: birth birth, // 等同于hello: function ()... hello() { console.log('我的名字是', this.name); }};
这种写法用于函数的返回值,将会非常方便。
function getPoint() { var x = 1; var y = 10; return {x, y};}getPoint()// {x:1, y:10}
2、属性名表达式
ES6 允许字面量定义对象时,用方法二(表达式)作为对象的属性名,即把表达式放在方括号内。
var lastWord = 'last word';var a = { 'first word': 'hello', [lastWord]: 'world'};a['first word'] // "hello"a[lastWord] // "world"a['last word'] // "world"let obj = { ['h' + 'ello']() { return 'hi'; }};obj.hello() // hi
3、方法的name属性
函数的name属性,返回函数名。对象方法也是函数,因此也有name属性。
const person = { sayName() { console.log('hello!'); },};person.sayName.name // "sayName"
上面代码中,方法的name属性返回函数名(即方法名)。
4、Object.is()
它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
不同之处只有两个:一是+0不等于-0,二是NaN等于自身。
+0 === -0 //trueNaN === NaN // falseObject.is(+0, -0) // falseObject.is(NaN, NaN) // true
5、Object.assgin()
用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。
var target = { a: 1 };var source1 = { b: 2 };var source2 = { c: 3 };Object.assign(target, source1, source2);target // {a:1, b:2, c:3}
注意,如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
var target = { a: 1, b: 1 };var source1 = { b: 2, c: 2 };var source2 = { c: 3 };Object.assign(target, source1, source2);target // {a:1, b:2, c:3}
如果只有一个参数,Object.assign会直接返回该参数。如果该参数不是对象,则会先转成对象,然后返回。
如果该参数不是对象,则会先转成对象,然后返回。
6、Object.keys(),Object.values(),Object.entries()。
ES5 引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。
var obj = { foo: 'bar', baz: 42 };Object.keys(obj)// ["foo", "baz"]
ES2017 引入了跟Object.keys配套的Object.values和Object.entries,作为遍历一个对象的补充手段,供for…of循环使用。
Object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。
var obj = { foo: 'bar', baz: 42 };Object.values(obj)// ["bar", 42]var obj = { 100: 'a', 2: 'b', 7: 'c' };Object.values(obj)// ["b", "c", "a"]//上面代码中,属性名为数值的属性,是按照数值大小,从小到大遍历的,因此返回的顺序是b、c、a。
Object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值对数组。
var obj = { foo: 'bar', baz: 42 };Object.entries(obj)// [ ["foo", "bar"], ["baz", 42] ]Object.entries({ [Symbol()]: 123, foo: 'abc' });// [ [ 'foo', 'abc' ] ]//上面代码中,原对象有两个属性,Object.entries只输出属性名非 Symbol 值的属性。将来可能会有Reflect.ownEntries()方法,返回对象自身的所有属性。
- es6入门-对象的扩展
- ES6对象的扩展
- 【es6】对象的扩展
- ES6--对象的扩展
- ES6对象的扩展
- ES6-Array对象的扩展
- 【ES6】对象的扩展2
- ES6--对象、函数的扩展
- 07、ES6 对象的扩展
- ES6(八) 对象的扩展
- ES6--内置对象的扩展
- ES6入门(数组扩展,函数扩展,对象扩展,Symbol,数据结构)
- ES6-对象的扩展-对象的扩展运算符
- 《ES6标准入门》:数组的扩展
- 《ES6标准入门》:函数的扩展
- ES6 对象的扩展 简单测试
- 自学-ES6篇-对象的扩展
- Math 对象es6上面的扩展
- android软键盘上添加一个按钮
- solr初步
- C++ set
- NYOJ 98
- 使用Python获取并处理IP的类型及格式
- es6入门-对象的扩展
- Visual Studio:error MSB8020
- 职业规划和认识
- 【OpenCV+Python】轮廓检测及绘制,可用以生成对应于不规则形状ROI区域的mask
- c++memcpy
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- CodeForces 371 E.Subway Innovation(贪心)
- 安装完jekyll还需要安装的东西
- Java时间格式对照表