0

在 highcharts 的tooltip.pointFormat中,我们看到了一个 JavaScript 封装变量的示例:我们可以传递类似'blah {series.name} blah {point.y}'的内容,并且在内部将其更改为类似的内容'blah '+series.name+' blah '+point.y

我想在我正在构建的 jQuery 插件中实现类似的功能。有没有标准的方法来做到这一点?

我想检查所有可能的封装变量,但这不会那么整洁,不是吗?

4

1 回答 1

1

没有我知道的标准方法,但 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
于 2013-06-17T07:42:16.810 回答