簡體   English   中英

string.replace替換參考字符串

[英]string.replace replaces reference string

我在下面有一個文本替換功能,

function msgConstructor(type, language, withUserName, userName) {
    var txtAndPayloadType = {}
    switch (language) {
        case Enums.DeviceLanguages.tr:
            txtAndPayloadType = Dictionary.tr.notifications[type]
            break;
        case Enums.DeviceLanguages.en:
        default:
            txtAndPayloadType = Dictionary.en.notifications[type]
            break;
    }
    txtAndPayloadType.text = txtAndPayloadType.text.replace('[userName]', userName).replace('[withUserName]', withUserName)
    return txtAndPayloadType;
}

我從字典中獲取值到一個單獨的var,但是以某種方式對它的文本進行.replace調用會影響字典中的值。 我認為這與原型級別有關。 我怎樣才能真正地將值從Dictionary復制到新的var?

當您像這樣創建一個對象時:

var a = { a: 1 };
var b = a;

a僅引用b 不管你再更改屬性ab ,這是您要更新的同一個對象。

b.a = 2;
console.log(a.a);     // Outputs 2
console.log(b.a);     // Outputs 2
console.log(a === b); // Outputs true

對於字符串,它不像這樣工作:

var a = "a";
var b = a;
b = "b";
console.log(a);       // Outputs "a"
console.log(b);       // Outputs "b"
console.log(a === b); // Outputs false

您可以做的只是復制text屬性,該屬性包含一個字符串:

var newText;
switch (language) {
    case Enums.DeviceLanguages.tr:
        newText = Dictionary.tr.notifications[type].text;
        break;
    case Enums.DeviceLanguages.en:
    default:
        newText = Dictionary.en.notifications[type].text;
        break;
}
return {
  text: newText
    .replace('[userName]', userName)
    .replace('[withUserName]', withUserName)
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM