JavaScript/jQuery封装变量



在highcharts的工具提示中。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

最新更新