eval可以将字符串生成语句执行,和SQL的exec()类似。
eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了。举个例子:
我们要做一个function(),功能是输入网页中两个个对象的名称,然后程序就将这两个对象的值联接起来输出。
function output(a,b)
{
var tmpa,tmpb;
tmpa=document.all.a.value;
tmpb=document.all.b.value;
document.write(tmpa+tmpb);
}
output('input1','input2');
这样你执行的时候就会提示错误“document.all.a不是对象”以及“document.all.b不是对象”。原来 javascript把a和b当成对象名称了,怎样能让javascript把a里面的值作为对象名称呢?这时候就要用eval了,把代码改成这样:
function output(a,b)
{
var tmpa,tmpb;
tmpa=eval("document.all."+a+".value");
tmpb=eval("document.all."+b+".value");
document.write(tmpa+tmpb);
}
output('input1','input2');
这样javascript就会先取出a,b的值,然后和前面的document.all.以及后面的.value组合运行,于是就可以
顺利取出input1和input2的值,我们的目的达到了。
JSON简介
JSON是一种用JavaScript对象符号格式化文本的简单方法。与其它更为流行的面向对象设计技术不同的是,人们经常称它为面向数据工具。由于它使用编程结构,因此易于为人与机器进行阅读。
JSON旨在传送基于文本的数据,所以它不支持任何类型的二进制对象。基本上,它支持两种类型的数据结构:名称/值对集合(如对象)和有序数值列表(如数组)。下面的列表详细说明了JSON支持的数据元素:
- Objects(对象):以大括号( {})开始并结束的对象。
- Object members(对象成员):由以冒号(:)分隔的字符串和值组成的元素。成员之间用逗号(,)隔开。
- Arrays(数组):数据用大括号定义。也就是说,它们以大括号({})开始并结束。数组由值构成,这些值位于大括号之中,不同值之间以逗号隔开。
- Values(值):单独的值可能为字符串、数字、对象、或一个文字值,如真、假和零。字符串值位于双引号中,可能包含Unicode字符和反斜扛或转义字符。字符是一个单独的字符串。
简单是JSON的一个主要优势——它比与之对应的XML要简单得多。用一个显示JSON数据语法和格式化的例子就能清楚证明这一点。下面的代码片断使用JSON来建立一个网址数组:
{
"websites":[
"http://www.techrepublic.com/",
"http://www.cnet.com/",
http://www.news.com/
] }
要用XML方便地定义同样的数据,可能相当困难。
处理JSON数据
要应用JSON,你需要像处理XML一样对JSON格式的数据进行解析。
由于其设计简单,所以用JavaScript内置的eval()过程可以很方便地对JSON进行解析,如下面的代码片断所示:
testObject = eval('(' + json_data + ')');
<meta content="JavaScript" name="vs_defaultClientScript">
<script>
function jsontest()
{
//json
var jsontext = '{"man":{"weight":"75kg","age":"24"},"ar":["1","2","3","4"]}';
//解析json
var aman = eval("("+jsontext+")");
//取出json中的信息
alert(aman.man.weight);
}
</script>
- //转换为对象,其中有一个属性name
- var myJSONtext = '{name: "123"}';
- var obj = eval('(' + myJSONtext + ')');
- //显示123
- alert(obj.name);
- //转换为一个对象,其中有一个属性bindings, 它的值为一个数组,而数组中包含三个对象,
- //每个对象含有属性ircEvent、method、regex
- var myJSONObject = {"bindings": [
- {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
- {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
- {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
- ]
- };
- //显示newURI
- alert(myJSONObject.bindings[0].method);
-