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