ECMAScript6(ES6)标准之对象Object扩展方法及新特性
来源:互联网 发布:喜夜网络娴主播 编辑:程序博客网 时间:2024/06/05 04:30
ES6对于Object也扩增了几个方法
不过最重要的是
ES6扩展了一些语法
比如说允许直接写入变量和函数,作为对象的属性和方法
使我们的对象更加简洁
下面我就来详细说明一下
语法扩展
简写对象属性
let name = 'payen';let obj = { name, age: 19}console.log(obj);//{"name":"payen","age":19}
从这个例子可以看出省略属性值的属性
它的值就是变量对应的值
比如说我的函数想要返回一个对象
对象的属性与参数同名
那么现在我们就可以这样写
let a = 1, b = 2;function foo(a, b){ return {a, b};}console.log(foo(a, b));//{a: 1, b: 2}
这个函数就等价于
function foo(a, b){ return {a: a, b: b};}
简写对象方法
现在除了属性可以简写,方法也可以简写了
看这里
let person = { say(){ console.log("hello world~"); }}person.say(); //hello world~
没错这也可以输出
它就是下面这种形式的简写
let person = { say: function(){ console.log("hello world~"); }}
把“:”和“function”去掉就可以了
添加对象属性
let person = {};
在ES6之前我们要想向对象中添加属性
我们只能这么写,利用标识符
person.name = 'payen';
但是强大的ES6允许我们使用表达式作为属性
person['a'+'g'+'e'] = 19;
我们还可以这样用
let attr1 = 'name', attr2 = 'age', attr3 = 'sex';let person = { [attr1]: 'payen', [attr2]: 19, [attr3]: 'male'}console.log(person);//{name: "payen", age: 19, sex: "male"}
使用“[ ]”可以让变量所代表的值作为对象的属性
方法扩展
同值相等Object.is()
这个静态方法用于比较两个值是否严格相等
大家可能要问了,严格相等使用“===”不就得了
不是的
这个方法是 真·严格相等
“===”与“==”都是有缺点的
“==”发生类型转换大家都知道
而“===”
console.log(NaN === NaN); //falseconsole.log(+0 === -0); //true
ES6提出了“Same-value equality”(同值相等)算法
用来解决这个问题
Object.is()就是部署这个算法的新方法
console.log(Object.is(NaN, NaN)); //trueconsole.log(Object.is(+0, -0)); //false
对象合并Object.assign()
这个方法用于合并对象,注意还是浅拷贝
let obj = { name1: 'foo'};let obj1 = { name2: 'bar'};let obj2 = { name3: 'baz'};Object.assign(obj,obj1,obj2);console.log(obj);//{name1: "foo", name2: "bar", name3: "baz"}
obj1和obj2中的键和值均被拷贝到了obj对象中
当然了,被拷贝的对象内部是不变的
参数没有限制
第一个参数就是被拷入的对象
还有一点要注意,如果出现了同名属性
这个方法的处理是覆盖
let target = { name: 'a'};let source = { name: 'b'};Object.assign(target, source);console.log(target);//{name: "b"}
==主页传送门==
5 0
- ECMAScript6(ES6)标准之对象Object扩展方法及新特性
- ECMAScript6(ES6)标准之函数扩展特性箭头函数、Rest参数及展开操作符
- ECMAScript6(ES6)标准之数组Array扩展方法
- ECMAScript6(ES6)新特性
- ECMAScript6(ES6)标准之解构赋值语法及应用
- ECMAScript6(ES6)标准之class类的定义、继承及静态方法
- ECMAScript6 (ES6、ES2015)新特性详解
- ECMAScript6 (ES6、ES2015)新特性详解
- ECMAScript6新特性(一)
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- ES6学习——新的语法:对象字面量扩展(Object Literal Extensions)
- ES6学习——新的语法:对象字面量扩展(Object Literal Extensions)
- ES6之对象字面量扩展语法(Enhanced Object Literals)
- ECMAScript6(ES6)标准之let、const关键字与块级作用域
- ECMAScript6 新特性——“数组的扩展”
- ECMAScript6新特性简介
- ECMAScript6 新特性总结
- C# 3.0新特性之扩展方法
- Goolge服务包内置
- Android酷炫实用的开源框架(UI框架)
- 【codeforces 749B】Parallelogram is Back
- Android控件布局属性全纪录
- arm-none-eabi-g++ -Xlinker -T "../LF3Kmonitor.ld" -Xlinker -Map="Bogota_ICT_V.map"-ram-hosted.ld -mc
- ECMAScript6(ES6)标准之对象Object扩展方法及新特性
- caffe 学习资源
- dll编写为什么加上 extern "C" 和 __stdcall /__cdecl
- CentOS7使用firewalld打开关闭防火墙与端口
- Swift提示框
- Windows下关于稀疏编码建模工具箱SPAMS的配置
- 安卓布局中layout_gravity和gravity的区别
- DOM事件
- [乐意黎转载]PHP mysql_fetch_object() 函数