繁体   English   中英

如何更新使用javascript中的模板文字的对象值?

[英]How can I update an object value which uses a template literal in javascript?

如您所见,对象obj2使用的是obj1中定义的模板文字。 调用func()后,如何更新obj2中title的对象值?

在文件1中

let obj1 = { name: 'abc' }, 
obj2 = { title : `${obj1.name}` } 

在文件2中

import {obj1, obj2} from 'file1';

func();

func() {
let obj1 = _.clone(obj1), obj2 = _.clone(obj2);
obj1.name = 'Title of this Page';
console.log(obj2.title) // Still shows abc
}

您不能,对模板文字进行了评估,并在评估其内部的对象初始化程序时将其转换为字符串。 obj.title是字面被评估(一string¹)的模板的结果 ,而不是某种模板对象的。 模板文字正好是这样:一种文字符号 ,在遇到文字文字时会进行评估(就像评估字符串文字一样,当遇到字符串文字时会生成一个字符串)。

相反,您可以将title作为传递name的函数:

let obj1 = { name: 'abc' }, 
obj2 = { title : name => `${name}` } 

当然,在需要标题时必须调用它。


¹ 在这种情况下为字符串,因为模板文字是独立的,未附加到标记函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM