好的,我在 html 元素上有一个属性:data-content='from:function:project101.login.check'
我希望能够运行project101.login.check中的函数。
但是使用我编写的js,我不确定如何实现这一点。
此时 js 到达了字符串,但无法运行它。
html
<a href="some href" data-loader data-content='from:function:project101.login.check' >target</a>
JS
var project101 = {
login: {
check: function(){
alert('function hit!');
}
}
}
$('*[data-loader]').click(function(e){
e.preventDefault();
var contentParams = $(this).attr('data-content').split(':');
console.log( contentParams );
switch( contentParams[0] ){
case 'from':
switch( contentParams[1] ){
case 'function':
contentParams[2]();
break;
}
}
});
最佳答案
您可以分割 .
上的字符串,然后向下钻取对象,直到到达所需的位置,而不是使用 eval
。
function getObjFromPath(path, context){
var obj = context || window,
pathArray = path.split('.');
for(var i = 0; i < pathArray.length; i++){
obj = obj[pathArray[i]];
}
return obj;
}
然后只需调用该函数:
var func = getObjFromPath(contentParams[2]);
func();
关于javascript - JS 运行函数在多暗淡对象中失败..不确定这是否可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22405997/