精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-31
supernaturalmagician 写道 补充一下:我个人很反感那些回帖说让回去好好补补基础, 希望楼主不要误解,因为this和prototype确实有整整一章可以讲,我们口头陈述的,会不完整,甚至会打不到点上,因为只是就你的问题而论。而看书,是可以真正获知“为什么”,对整个机制有全面的了解。能不能触类旁通是另外一回事,即使,向别人问了,别人解释了,也有可能不会触类旁通。 而我的观点是:书是根本。 |
|
返回顶楼 | |
发表时间:2007-10-31
supernaturalmagician 写道 afcn0 写道 一个方法的scope里面怎么可能包含另一个方法的引用,initialize也是方法,和showMessage完全平级,只不过默认调用
谢谢,明白了。 另外,也补充一句,afcn0的解释,你真的明白了吗? 方法的scope到底是什么?为什么js不能像java那样,不用this就能访问类方法?? 我最浅显的解释是,为什么想c++和java这种语言中,不加this就可以访问,因为那些是编译器做的优化,而不是真的不用加。 而js解释性语言,除非在函数的scope里形成闭包,要不然,对于任何属于同一个对象的方法而言,其方法内部要访问其余方法,必须加this。this引用的就是方法所属的对象。这和java,c++是一样的。 |
|
返回顶楼 | |
发表时间:2007-10-31
ajaxgo 写道 supernaturalmagician 写道 afcn0 写道 一个方法的scope里面怎么可能包含另一个方法的引用,initialize也是方法,和showMessage完全平级,只不过默认调用
谢谢,明白了。 另外,也补充一句,afcn0的解释,你真的明白了吗? 方法的scope到底是什么?为什么js不能像java那样,不用this就能访问类方法?? 我最浅显的解释是,为什么想c++和java这种语言中,不加this就可以访问,因为那些是编译器做的优化,而不是真的不用加。 而js解释性语言,除非在函数的scope里形成闭包,要不然,对于任何属于同一个对象的方法而言,其方法内部要访问其余方法,必须加this。this引用的就是方法所属的对象。这和java,c++是一样的。 |
|
返回顶楼 | |
发表时间:2007-10-31
ms上面有文不错http://msdn.microsoft.com/msdnmag/issues/07/05/javascript/default.aspx?loc=zh#S1也许有帮助,js最神奇的就是scope chain,prototype chain以及动态context了,当然还有lambda(匿名函数)
|
|
返回顶楼 | |
发表时间:2007-10-31
afcn0 写道 ms上面有文不错http://msdn.microsoft.com/msdnmag/issues/07/05/javascript/default.aspx?loc=zh#S1也许有帮助,js最神奇的就是scope chain,prototype chain以及动态context了,当然还有lambda(匿名函数) 谢谢,正在研究中...,等我理解了闭包后会另开一贴进行讲解。
|
|
返回顶楼 | |
发表时间:2007-11-01
说句大实话,js的闭包,原型链条,以及动态上下文这几个概念并没大多数人想像的那么复杂:)
要想快速掌握,最简单的办法就是自己动手写代码看看…… |
|
返回顶楼 | |
发表时间:2007-11-01
笨笨狗 写道 说句大实话,js的闭包,原型链条,以及动态上下文这几个概念并没大多数人想像的那么复杂:)
要想快速掌握,最简单的办法就是自己动手写代码看看…… var foo = (function() { var t; return function() { if (t) { return t; } t = new Date(); return t; } })(); 调用alert(foo);--->function(){....} alert(foo())--->当前时间 疑问: 1.给foo赋值的时候,为什么function外边要加上一个括号,最后还要加一个()呢? |
|
返回顶楼 | |
发表时间:2007-11-01
你这种弱智问题,很多人不乐意回答
|
|
返回顶楼 | |
发表时间:2007-11-01
supernaturalmagician 写道 var foo = (function() { var t; return function() { if (t) { return t; } t = new Date(); return t; } })(); 调用alert(foo);--->function(){....} alert(foo())--->当前时间 疑问: 1.给foo赋值的时候,为什么function外边要加上一个括号,最后还要加一个()呢? 上面的过程等同于 var something=function() { var t; return function() { if (t) { return t; } t = new Date(); return t; } } var foo=something(); |
|
返回顶楼 | |
发表时间:2007-11-01
ajaxgo 写道 supernaturalmagician 写道 var foo = (function() { var t; return function() { if (t) { return t; } t = new Date(); return t; } })(); 调用alert(foo);--->function(){....} alert(foo())--->当前时间 疑问: 1.给foo赋值的时候,为什么function外边要加上一个括号,最后还要加一个()呢? 上面的过程等同于 var something=function() { var t; return function() { if (t) { return t; } t = new Date(); return t; } } var foo=something(); var param=()();说句老实话,以前我的确没有碰到过这种赋值,也可能是我水平有限,这算是一种技巧吧,不应该是基础范围内的东西怎么能成为“弱智”问题呢?相关参考书书上有这种用法吗? |
|
返回顶楼 | |