dinghao

记录成长点滴

 

随笔分类 -  Ajax

ajax-javascript-范围链、call对象与闭包
摘要:闭包基础都知道,局部变量隐藏全局变量,为什么会隐藏?因为函数对象的[[scope]]内部属性,闭包能实现也因为有这个对象。Excution Context&Scope&Call Object当函数被调用时,解释器为其创建一个上下文,当函数返回时,解释器回到最初的上下文。解释器形成一个上下文栈。上下文包含:全局上下文和局部上下文。创建上下文会伴随一系列对象的创建,包含:Call Object:此对象包含一个arguments属性指向argumets对象。argumentsObject:保含的是调用者指定的参数和被调用函数无关。赋值给Call Object的arguments属性。 阅读全文

posted @ 2007-07-20 17:39 思无邪 阅读(3241) 评论(8) 推荐(0)

Ajax-Javascript-继承
摘要:Prototype-based继承继承只是在用OO的术语描述Js,不能用OO继承来理解Js的继承。Js的继承根据实现方式不同,结果也不同。如Ma的继承打破了prototype chain,和常用的继承实现方式不同。这里只谈基于prototype的继承。Prototype链由于继承,prototype会形成链。链从当前的prototype开始,到Object结束。Prototypechain是许多Js方法的基础,如变量定位机制:先查找构造函数内的变量,即obj自身,没有会顺着prototype chain寻找,并一直到Object。如果没有找到则undefined。因此实现继承最好不破坏这条链, 阅读全文

posted @ 2007-07-19 13:36 思无邪 阅读(3052) 评论(4) 推荐(0)

Ajax-JavaScript-namespace
摘要:引入Namespace的目的JavaScript中引入Namespace和C#一样,都是为了避免命名冲突。但是Js又有些特殊:js解释执行,如果后面定义了同名的变量会覆盖前面变量,并用应用新定义变量的语义。这在Js中合法,没有错误提示,因此bug很难找。可以想象,我调用了一个第三方模块,如果这个模块没有定义在Namespace中,我定义的变量和函数很可能就覆盖了第三方的同名符号。模块原则a module should never add more than a single symbol to the global namespace。只有这样才能保证模块的重用性,MicrosoftAJax就 阅读全文

posted @ 2007-07-18 14:01 思无邪 阅读(4453) 评论(11) 推荐(0)

Ajax.net-Javascript
摘要:上个月开始看Ajax ToolKit代码,到Animations.js时发现,根据从Js高级程序设计学到的Js语法没有办法解释Animations的实现,细看MicrosoftAJax.js也是不懂地方很多。经过近一个月的Js学习,把一些体会记录下来,使其他人可以尽快的从OO观念转到Js。态度 以前以为Js是很弱的语言,这次深入的学习发现Js的功能出乎意料的强大。工具 Vs 带的编辑器:不专业,用它写代码验证自己的一些想法会被气死,太慢。Orcas据说增加了智能感知,从MicrosoftAjax.js的语法也可以看出对Linq的支持,支持智能感知也顺理成章,只是不知道对自己定义的函数有没有此功 阅读全文

posted @ 2007-07-17 17:35 思无邪 阅读(2697) 评论(16) 推荐(0)

导航