用函数返回的值更新初始化的字符串
Update a string who was init with values returned from a function
是否有一种方法来更新一个字符串谁是从函数返回的值初始化?
下面是我所说的一个例子:
var level = 1,
returnLevel = function() {
return level;
},
str = 'level: ' + returnLevel();
level = 2;
// how to update the var str without doing 'level:' + level?
编辑:真实代码,因为它被要求(我缩小了很多代码):
function returnPrice(what) {
return g.items[what].baseCost;
};
g.items = {
'item-1': {
baseCost: 100
},
'item-2': {
baseCost: 1000
},
'item-3': {
baseCost: 5000
}
};
g.console.commands = [
{
name: 'buy',
desc: 'command desc',
commands: [
{
name: 'buy item',
desc: 'buy specified item',
customDesc: [
'test desc $' + returnPrice('item-1') + '.',
'test desc $' + returnPrice('item-2') + '.',
'test desc $' + returnPrice('item-3') + '.'
]
}
]
}
];
另一种方法是使用str
作为函数,并实现toString
方法来调用不带括号的实际值。
var level = 1,
returnLevel = function () {
return level;
},
str = function () {
function f() { }
f.toString = function () {
return 'level: ' + returnLevel();
}
return f;
}();
console.log(str);
level = 2;
console.log(str);
你不能那样做;您可能想要这样做:
var returnString = function(level) {
return 'level: ' + level;
},
str = returnString(1);
console.log(str);
str = returnString(2);
console.log(str);
// also possible:
console.log(returnString(3));
查看get和set。
//The closure is just to make 'level' private
let obj = (() => {
let level = 0;
return {
get levelString() { return "level: " + level; },
set level(val) { level = val; }
};
})();
console.log(`Before: '${obj.levelString}'`);
obj.level = 4;
console.log(`After: '${obj.levelString}'`);
编辑:如果你不同意,至少给出一个解释。
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- React redux初始化功能,无论状态变化如何
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- 正在使用日期字符串初始化javascript日期对象
- 初始化是否可以存储为JavaScript中的字符串
- 为什么当我使用变量而不是整数或字符串时初始化日期对象失败
- 如何添加新的输入行并插入数据库并出现错误 未初始化的字符串偏移量:0 in
- 如何在jquery中初始化字符串中的类或标题
- 如何从包含初始化项的字符串创建对象
- 为什么对象在新的api调用时没有被初始化,而字符串变量被初始化
- AngularJS:如何用从$http下载的字符串初始化资源
- 用函数初始化ng-model字符串
- 初始化jQuery函数并传递一个字符串变量
- 在Highchart中,如何初始化数据中的字符串值
- 用函数返回的值更新初始化的字符串
- 用数组形式的字符串初始化Array
- 使用ISO8601日期字符串初始化JavaScriptDate会产生日期值-1天
- 从字符串中初始化数组