원래 질문의 요구 사항은 임의의 대체 키의 런타임 처리처럼 보이기 때문에 문자열 보간의 이점을 얻을 수 없었습니다.
그러나 문자열 보간 만 수행해야하는 경우 다음을 사용할 수 있습니다.
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
문자열을 구분하는 백틱은 필수입니다.
특정 OP의 요구 사항에 맞는 답변을 얻으 String.prototype.replace()
려면 교체에 사용할 수 있습니다 .
다음 코드는 모든 일치 항목을 처리하고 교체하지 않은 항목은 터치하지 않습니다 (교체 값이 모두 문자열 인 경우 아래 참조).
var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';
str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});
jsFiddle .
대체 항목 중 일부가 문자열이 아닌 경우 먼저 개체에 있는지 확인하십시오. 예와 같은 형식이있는 경우 (예 : 백분율 기호로 래핑) in
연산자를 사용하여 이를 수행 할 수 있습니다 .
jsFiddle .
그러나 형식에 특수 형식 (예 : 문자열)이없고 교체 객체에 null
프로토 타입 이없는 경우 Object.prototype.hasOwnProperty()
잠재적으로 교체 된 하위 문자열이 프로토 타입의 속성 이름과 충돌하지 않는다고 보장 할 수없는 경우를 사용 합니다.
jsFiddle .
그렇지 않으면 대체 문자열이 'hasOwnProperty'
이면 결과적으로 엉망인 문자열이 표시됩니다.
jsFiddle .
보조 노트로서, 당신은 호출해야 replacements
을 Object
아닌가 Array
.