Но таким образом, вы не можете проверить, является ли параметр правильным URL-адресом, или закодировать его и т. Д. И я избегаю eval как ад по известным причинам.
Я бы предпочел более сложный, но более безопасный способ - если это строка, ее можно проанализировать:
//test dub
pageTracker = {
_trackpageview: function(path) {alert(path)}
}
var str = "pageTracker._trackpageview('/url/page1.page')";
//get param
var urlpathregex = /\('([a-z0-9\-._~%!$&'()*+,;=:@\/]+)'\)/;
var param = urlpathregex.exec(str)[1];
//do some stuff/validation with param
[...]
//get object and function name
var funcregex = /([a-zA-Z0-9_]+)?\.?([a-zA-Z0-9_]+)(?=\()/;
var match = funcregex.exec(str);
var obj, func;
obj = match[1];
func = match[2];
//invoke
window[obj][func](param);
Это просто пример, а не копирование и вставка готового кода :) Поскольку для начала - если вы динамически получаете "pageTracker._trackpageview ('/ url / page1.page')" в виде строки, здесь есть некоторый запах уже.