ES6对象扩展

9 篇文章 0 订阅

属性的简洁表示

es6允许直接写入变量和函数,作为属性名和方法

var a = 'b';
var c = {a};
//c = {a:'b'};

如果属性值与属性名一样,我们值写属性名就可以:

{ x , y } = { x: x, y: y}

方法简写:

add(){ a + b};
//add : function (){
    a + b
}

属性名表达式

定义对象属性有两种方法:


1
obj.name = lijixuan;
2
obj['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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值