После рассмотрения вашего обновленного вопроса, я думаю, что вам действительно нужна функция, которая будет принимать шаблон и объект значений для замены.Вот рабочий пример.
function PropertyAccess(template, values) {
for (key in values) {
template = template.replace('${' + key + '}', values[key])
}
return template;
}
console.log(PropertyAccess('hello ${val}', {val: 'world'}))