新足迹

 找回密码
 注册

精华好帖回顾

· 《半月谈》 我的历史观 (2011-9-14) pink_maomao · 我又JW了, 看病怎么TM这么贵啊! (2008-7-16) applenet
· 澳洲葡萄酒随想 (2007-1-25) possum · 利用旧柜子改建猪窝 (2021-2-11) jz1215
Advertisement
Advertisement
查看: 1932|回复: 12

javascript怎样把object的key用变量显示 [复制链接]

特殊贡献奖章

发表于 2011-6-8 13:10 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
比如
var id_type="feedback_id"
要怎样表现ob.feedback_id?

我试了var str="ob"+id_type;
但是输出str就是一个“ob.feedback_id”的string不是ob.feedback_id的值

[ 本帖最后由 kr2000 于 2011-6-8 13:12 编辑 ]
Advertisement
Advertisement

发表于 2011-6-8 13:15 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
eval(“ob.feedback_id”)

评分

参与人数 1积分 +5 收起 理由
kr2000 + 5 感谢分享

查看全部评分

发表于 2011-6-8 13:16 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
ob[id_type]

评分

参与人数 1积分 +5 收起 理由
kr2000 + 5 感谢分享

查看全部评分

特殊贡献奖章

发表于 2011-6-8 13:35 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
楼上两个都可以
谢谢啦

发表于 2011-6-8 13:42 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-6-8 13:16 发表
ob

第二个比eval 好

The eval() function in javascript is a way to run arbitrary code at run-time. In almost all cases, eval should never be used. If it exists in your page, there is almost always a more correct way to accomplish what you are doing. For example, eval is often used by programmers who do not know about using Square Bracket Notation.

this will also work
MyObject["value"+i]

JSON.parse("returntxt") 也优于 eval("("+resoponse+")")
for security concern

[ 本帖最后由 o2h2o 于 2011-6-14 13:44 编辑 ]

评分

参与人数 2积分 +7 收起 理由
cdfei + 2 谢谢奉献
kr2000 + 5 谢谢奉献

查看全部评分

发表于 2011-6-8 13:57 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢提示,这种方式用eval有没有其他替代的?
var a = "1+2";
alert(eval(a));
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-6-8 14:06 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
OO行吗?


ob = new Object()
ob.feedback_id= 1234;

发表于 2011-6-8 14:07 |显示全部楼层
此文章由 o2h2o 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 o2h2o 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 cdfei 于 2011-6-8 13:57 发表
谢谢提示,这种方式用eval有没有其他替代的?
var a = "1+2";
alert(eval(a));

这种 就和 json 运行的那种方式类似,
好像没啥好办法可以替换

eval的问题是效率比较低
如果大量的js 就够呛了

一般的页面就一两次调用的没什么关系 js调用多了就要注意了
我在 iphone 上面写过一个 很大量的js的处理,在页面上面
效率优化前和效率优化后速度从4秒执行时间变成1.2秒

还有一个就是不要在循环中直接操作 dom
宁可变成字符串拼接 最后一次操作dom append element上去

速度差别太明显了

[ 本帖最后由 o2h2o 于 2011-6-8 14:14 编辑 ]

发表于 2011-6-8 14:09 |显示全部楼层

回复 o2h2o 8# 帖子

此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
效率低是能理解的,相当于要翻译一次再运行

发表于 2011-6-8 14:42 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
eval我只有在func test(用jQuery)的时候才用,其他地方不用.

发表于 2011-6-8 23:09 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
老虎同学提到oo,其实javascript也是很oo了,
比如lz提到的这个,再加点东西举个例子
var ob={
var pi=3.14;
feedback_id:"1234",
amount:100,
gst:function(){return this.amount*0.1;}
}

那么这个ob就有一个私有成员 pi, 两个public的变量 feedback_id ,amount,
还有一个成员函数gst

要存取public变量,楼上说的都对
当然可以直接用ob.feedback_id  来存取,
也可以用ob["feedback_id"]来存取,
或者 var vn= "feedback_id“  , 用ob[vn]存取,

结果都是一样

估计楼主是问最后一种,也就是说不知道具体的成员变量的名字,要动态输入变量名
Advertisement
Advertisement

发表于 2011-6-9 08:54 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-6-8 23:09 发表
var ob={
var pi=3.14;
feedback_id:"1234",
amount:100,
gst:function(){return this.amount*0.1;}
}


我也常用这个。。。

特殊贡献奖章

发表于 2011-6-9 09:15 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
对,我说的就是这个
我的情况是根据用户的选择,用getJSON执行不同的页面,得到不同的结果。
这个结果不同就在于回来的id type不一样,有时候是id,有时候是contact_id,有时候是feedback_id,所以要动态的输入成员变量名。
原帖由 于 2011-6-8 23:09 发表
估计楼主是问最后一种,也就是说不知道具体的成员变量的名字,要动态输入变量名

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部