在 highcharts 的tooltip.pointFormat中,我们看到了一个 JavaScript 封装变量的示例:我们可以传递类似'blah {series.name} blah {point.y}'
的内容,并且在内部将其更改为类似的内容'blah '+series.name+' blah '+point.y
。
我想在我正在构建的 jQuery 插件中实现类似的功能。有没有标准的方法来做到这一点?
我想检查所有可能的封装变量,但这不会那么整洁,不是吗?
在 highcharts 的tooltip.pointFormat中,我们看到了一个 JavaScript 封装变量的示例:我们可以传递类似'blah {series.name} blah {point.y}'
的内容,并且在内部将其更改为类似的内容'blah '+series.name+' blah '+point.y
。
我想在我正在构建的 jQuery 插件中实现类似的功能。有没有标准的方法来做到这一点?
我想检查所有可能的封装变量,但这不会那么整洁,不是吗?
没有我知道的标准方法,但 regex + reduce 似乎是一个很好的组合:
function format(str, obj) {
return str.replace(/\{([\w.]+)\}/g, function(_,key) {
return key.split('.').reduce(function(a,b){ return a[b]; },obj);
});
}
var obj = { series: { name:'myseries', id:40 }, point: { x:1, y:2 } };
var str = 'blah {series.name} blah {point.y}';
console.log(format(str, obj)); //=> blah myseries blah 2