eval的疑惑

一片儿蓝蓝的天 2011-07-19 11:25:33
function fSub(obj){
alert(obj.innerText);
}

方法1:
function f1(){
var obj = document.getElementById('div01');
var method = eval("fSub");
method(obj);
}

方法2:
function f2(){
var obj = document.getElementById('div01');
var strMethod = "fSub(\""+obj+"\")";
eval(strMethod );
}
方法1,和方法2的区别?
现在如果传入参数为对象时候,方法2不能正确运行。

这两种操作的却别是什么呢?
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
豆虫 2011-07-20
  • 打赏
  • 举报
回复
eval的用法是将eval的内容当做表达式执行
第一种:相当于method = fSub;
method(obj) 相当于 fSub(obj)
第二种:"fSub(\""+obj+"\")";这么写是错的
var strMethod = "fSub(obj)";
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 knightzhuwei 的回复:]

引用 2 楼 duzc309 的回复:

引用 1 楼 fanchuanzhidu 的回复:

eval的用法是将eval的内容当做表达式执行
第一种:相当于method = fSub;
method(obj) 相当于 fSub(obj)
第二种:"fSub(\""+obj+"\")";这么写是错的
var strMethod = "fSub(obj)";


我也不想这么……
[/Quote]

》人家不是已经告诉你了么
》eval("fSub(obj)");
我知道这么写可以,但是fSub(\""+obj+"\")是必须这么写的,客户给的API,不能修改。
所以我想能在fSub函数,转过来吗?
knightzhuwei 2011-07-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 duzc309 的回复:]

引用 1 楼 fanchuanzhidu 的回复:

eval的用法是将eval的内容当做表达式执行
第一种:相当于method = fSub;
method(obj) 相当于 fSub(obj)
第二种:"fSub(\""+obj+"\")";这么写是错的
var strMethod = "fSub(obj)";


我也不想这么写,"fSub(\""+obj+"\")";
……
[/Quote]
人家不是已经告诉你了么
eval("fSub(obj)");
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fanchuanzhidu 的回复:]

eval的用法是将eval的内容当做表达式执行
第一种:相当于method = fSub;
method(obj) 相当于 fSub(obj)
第二种:"fSub(\""+obj+"\")";这么写是错的
var strMethod = "fSub(obj)";
[/Quote]

我也不想这么写,"fSub(\""+obj+"\")";
该死的客户提供的一个API,函数里是这样的,我不能改动。
只能设想更改fSub函数了,有没有别的办法能够转过来呢。

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧