没想到还有个Toolkit。先提供一个asp.net ajax牛人的博客啦。点此处进入。
关于javascript的Eval函数!!Eval的基本用法!深入认识Eval。
刚才在看asp.net ajax library的API时,发现一些东西是用Eval实现。好奇之下查了,原来Eval居然是用来执行一个包含javascript代码的字符串的。也就是说,我们可以执行一个实际上是字符串的代码。爽啊。尽管.net 3.5中已支持lambda表达式,但是,像Eval这种强悍的功能还是不能办到。
用ajax向服务器端请求数据,如果以xml来描述交换的数据,那么在客户端将比较郁闷,因为用dom来解析xml比较麻烦。我第一次接触到json。原来json也是一种数据描述文本。点此处可见其简介。在c#中使用json!
各种ajax框架都依赖于javascript中的面向对象特性,事实上javascript真的不是什么面向对象语言,只是提供一些支持罢了,但是,各个框架都站在这狭小的一点上把oop放扬光大了。所以,尽管我对于javascript已蛮熟悉,我还是得来看一看javascript关于面向对象支持的基础。
Ojbect对象:
prototype这是整个javascript面向对象根基在,要为一个类、对象添加方法、属性,都是用它了。我查了很久,都没有哪个中文资料都prototype进行比较完备的描述,有的只是prototype.js的资料。protoptype表示原型对象。在javascript中。所有对象都是其原型对象的副本。对象从其原型对象中继承方法与属性。而对象的原型又从原型的原型继承,这样,形成了一条链。如果对一个对象调用m方法,那么,它会先在自身找这个方法,没有找到就会从原型中找此方法,如果还没有找到就会从原型的原型中找,一直找上去,直到找到Object.prototype。这就是javascript的原型链。可惜,这个原理在我看到的所有资料中很少提及。所以很晚才懂得这些。真是失误啊。
刚才才晓得,下面的代码居然可以运行:
var obj=new Object();
obj.name="刘伯平";
obj["name"]="刘伯平<br/>";
obj.age="18";
document.getElementById("lbl_Info").innerHTML=obj.name;
真是不可思议的语言啊。在正统编程语言,这想都不要想。找到一篇好文:javascript面向对象的支持!深入认识javascript中的函数!javascript函数对象进阶!
总结上面的几篇资料,总结了一些有用的方法:
一、声明一个类
function Car(){
this.name="吉普车";
this.price="12万人民币";
this.count="10000台";
this.toString=function(){
return this.name+" "+this.price+" "+this.count;
}
}
var o=new Car();
display(o);
在这里,Car与OOP中的类是何其相像,基本上可以当成类来用了。
二、定义命名空间
var Buddha=new Object(); //定义根命名空间;
Buddha.Utils=new Object(); //定义第二级命名空间;
Buddha.Utils.Car=function(name,price,count){
…………
}
命名空间就是这么定义来的,跟定义对象完全一样。
三、javascript中的所有对象本质上都是属性与方法的集合。因此,以下代码成立
var dic=new Object();
for(var i=0;i<=10;i++)
dic[i]="第"+i+"个元素";
for(i in dic)
document.write(dic[i]+"<br/>");
原来,在javascript中也是有类似于for each之类的语句的。