ES6对象扩展
来源:互联网 发布:js 固定长度数组 编辑:程序博客网 时间:2024/04/30 12:45
属性的简洁表示
es6允许直接写入变量和函数,作为属性名和方法
var a = 'b';var c = {a};//c = {a:'b'};
如果属性值与属性名一样,我们值写属性名就可以:
{ x , y } = { x: x, y: y}
方法简写:
add(){ a + b};//add : function (){ a + b}
属性名表达式
定义对象属性有两种方法:
1obj.name = lijixuan;2obj['name'] = lijixuan;
我们原本只能用标识符定义属性,在es6中我们可以使用表达式作为属性名:
var obj = { a : 111; bb: 222;};
现在可以:
var cc = 'a';var obj = { [cc] : 111; ['b' + 'b'] : 222;
这两种写法是相等的。
name属性
函数的name属性返回函数名。
function add (){ console.log(this.name);}//add
两种特殊情况:bind方法创造的函数,name属性返回“bound”加上原函数的名字;Function构造函数创造的函数,name属性返回“anonymous”。
(new Function()).name // "anonymous" var add = function() { ...}; add.bind().name // "bound add"
Object.is
用来比较两个值是否严格相等。
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
这就是Object.is与 === 的区别,其余的都一样。
Obiect.assign()
Object.assign方法用于对象的合并,将源对象的所有可枚举属性,复制到目标对象
let target = { a : 1 };let origin1 = { b : 2 };let origin3 = { c : 3 };Object.assign(target , origin1 , origin2 )//target {a : 1, b : 2, c : 3};
第一个参数是目标对象,其余的全是源对象。
如果只有一个参数,返回该参数,如果不是对象,转换为对象。
undefined 、 null 报错。
字符串 => 数组 => 对象 (数组参数的转换形式)
拷贝:
var target = { a: { b: 'c', d: 'e' } } var source = { a: { b: 'hello' } } Object.assign(target, source) // { a: { b: 'hello' } }
使用assign拷贝是浅拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。
为对象添加方法:
add(x, y) { Object.assign(this, {x, y}); }
合并对象:
(target, ...sources) => Object.assign(target, ...sources);
Object.setPrototypeOf()
给对象增加原型:
let proto = {}; let obj = { x: 10 }; Object.setPrototypeOf(obj, proto); proto.y = 20; proto.z = 40; obj.x // 10 obj.y // 20 obj.z // 40
Object.keys() Object.values() Object.entries()
Object.keys(obj) Object.values(obj) Object.entries(obj)
一个返回可遍历的属性名,一个返回可遍历的属性值,一个返回数组,属性名与属性值。
阅读全文
0 0
- ES6-Math对象扩展
- ES6对象的扩展
- ES6 对象扩展
- ES6对象扩展
- 【es6】对象的扩展
- ES6 — 对象扩展
- ES6对象扩展
- ES6对象扩展
- ES6--对象的扩展
- ES6对象扩展
- js-es6-对象扩展
- ES6(八: 对象扩展)
- ES6对象扩展
- ES6对象的扩展
- ES6-Array对象的扩展
- 【ES6】对象的扩展2
- es6入门-对象的扩展
- ES6--对象、函数的扩展
- 栈和队列
- 购物车布局
- JavaScript 字符串
- Java文件--递归删除
- UVa12169(拓展欧几里得)
- ES6对象扩展
- 运维人该醒醒了,要变天了
- Linux下/proc目录
- 日常开发中的salt和token是什么?
- 欢迎使用CSDN-markdown编辑器
- C# 对象初始化问题(可否像C语言的结构一样,简洁的初始化)
- codeforces 96B Lucky Numbers (easy)
- 如何跟踪确定IP地址
- Nodejs 模块