JavaScript / jQuery封装变量

时间:2013-06-17 07:33:30

标签: javascript jquery variables highcharts encapsulation

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

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

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

1 个答案:

答案 0 :(得分:1)

我所知道的标准方法,但正则表达式+减少似乎是一个很好的组合:

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