3 回答
TA贡献2041条经验 获得超4个赞
你可以让它们发挥作用:
const language_settings = {
en: {
NOTIFICATION: 'Send notification to my phone',
getTimeRemaining: seconds => `Remaining time ${seconds} seconds`
},
fr: {
NOTIFICATION: 'Envoyer verification sur mon portable',
getTimeRemaining: seconds => `Temps restant ${seconds} secondes`
}
}
TA贡献1824条经验 获得超6个赞
您还可以使用Object.definePropertygetter/setter 动态定义对象属性,然后利用这些函数动态设置秒值。
seconds下面的代码片段将首先打印值为 1 的值,当seconds更改为 5 时,则记录的语句将打印为 5。
let seconds = 1;
const language_settings = {
en: {
NOTIFICATION: 'Send notification to my phone',
},
fr: {
NOTIFICATION: 'Envoyer verification sur mon portable',
}
}
Object.defineProperty(language_settings.en, 'TIME_REMANING', {
get : () => { return `Remaining time ${seconds} seconds`}
});
Object.defineProperty(language_settings.fr, 'TIME_REMANING', {
get : () => { return `Temps restant ${seconds} secondes` }
});
console.log(seconds, language_settings.en.TIME_REMANING, language_settings.fr.TIME_REMANING);
console.log('change second to 5');
seconds = 5;
console.log(seconds, language_settings.en.TIME_REMANING, language_settings.fr.TIME_REMANING);
TA贡献1872条经验 获得超3个赞
一种快速而肮脏的方法是像这样定义字符串:“剩余时间 $0 秒”并在每次使用它时调用 .replace(“$0”, 秒) 。我知道一款名为 CS:GO 的流行游戏就是这样做的。
或者在 NPM 上找到一个做得更好的模板引擎
但 JS 字符串模板(反引号字符串)不是为此而设计的。您还可以使用接受值并返回生成的字符串的函数
添加回答
举报