簡體   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