关于使用Objecte.assign()方法返回目标对象的目的是什么?

来源:4-7 票据 access_token 的获取和请求封装

intoit

2018-08-05

let info = Object.assign({}, {
    content: content,
    msgType: type,
    createTime: new Date().getTime(),
    toUserName: message.FromUserName,
    fromUserName: message.ToUserName,
    msgId: message.MsgId
})

this.opts = Object.assign({}, opts)

您好,Scott老师!在代码里看到有几个地方使用Object.assign()方法返回目标对象的用法,之前对这个方法不太熟悉,了解之后知道可以用来复制对象,您这里目的就是为了复制对象是吗?如果不用该方法,直接把对象赋值给对象,这样会有什么问题吗?是因为对象是引用类型,直接赋值只是改变了指向这样写会有什么影响是吗?

let info = {
    content: content,
    msgType: type,
    createTime: new Date().getTime(),
    toUserName: message.FromUserName,
    fromUserName: message.ToUserName,
    msgId: message.MsgId
}

this.opts = opts


写回答

1回答

Scott

2018-08-05

这样写没有太大问题,只不过扩展性会差一些,如果想要往 info 里面继续覆盖和继承一些其他的属性,就没有 assign 这么方便了,另外,为了保持接口的可测试性,通常我们会建议不去操作原对象,而是复制一份出来单独操作,这样这个函数的变量跟外部的变量,解除了引用关系,可以写出更健壮的代码

1
1
intoit
非常感谢!解决了我的疑惑
2018-08-05
共1条回复

Koa2实现电影微信公众号前后端开发

从零开始, 打造智能微信公众号及网站前后台,打通两端能力共享系统底层。

229 学习 · 70 问题

查看课程