锁定老帖子 主题:一句话谈javascript中的this
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-04
今天看js老爹Douglas Crockford的新书《JavaScript: The Good Parts》,他花了一节来讲这个this,总结了四种调用模式,我觉得对初学者是个不错的解释方法,不明白的可以找来看看。
4.3. Invocation |
|
返回顶楼 | |
发表时间:2008-05-04
又看到Douglas Crockford大人 又BS他一下
this骗初学js的小孩子玩不错 搞出4种模式来 DC大人去作科普好了 “看,js这神奇的语言啊!” 一句话说 this跟那个调用函数使用的引用有关 |
|
返回顶楼 | |
发表时间:2008-05-04
某人blog上贴的那个名言:this不可靠……
|
|
返回顶楼 | |
发表时间:2008-05-05
引用 有奶就是娘 还是蹩脚 var a = 'test1'; var test1=function() { return this.a; } var obj = {a:'test2',test2:test1}; with(obj) { test1(); test2(); } 娘是with(obj) 那么,test1,test2到底是不是喝娘的奶呢??? 用“有奶就是娘”,根本无法断言。 |
|
返回顶楼 | |
发表时间:2008-05-05
achun 写道 引用 有奶就是娘 还是蹩脚 var a = 'test1'; var test1=function() { return this.a; } var obj = {a:'test2',test2:test1}; with(obj) { test1(); test2(); } 娘是with(obj) 那么,test1,test2到底是不是喝娘的奶呢??? 用“有奶就是娘”,根本无法断言。 不管隐喻的合适不合适,但在该示例中: 1.with 语句中的 test1() 并没有关联 obj,很简单—— 因为 obj 没有 test1() 方法属性 2.上面的概念弄清了,这个第二点都不用解释了——反之。 你的错误很粗超,可以细腻点 |
|
返回顶楼 | |
发表时间:2008-05-05
zbm2001 写道 你的错误很粗超,可以细腻点 他的例子很有趣,是你没有理解。 |
|
返回顶楼 | |
发表时间:2008-05-05
hax 写道 zbm2001 写道 你的错误很粗超,可以细腻点 他的例子很有趣,是你没有理解。 ——还有什么玄机不成? 先看看with语句:用于设置代码在特定对象中的作用域。 调用方法属性(test1()和test2())时,解释程序先检查其是否为伪对象obj的方法。若不是,再检查其是否是本地函数。 套用原话讲,一言以蔽之——谁是谁的娘?obj不是test1()的娘! 以我愈末的智商实在是看不出还有其它什么有趣的了。 |
|
返回顶楼 | |
发表时间:2008-05-08
function fun(){
alert(this); } fun(); new fun(); 这个例子和上面异曲同工 |
|
返回顶楼 | |
发表时间:2008-05-08
zbm2001 写道 解释程序先检查其是否为伪对象obj的方法。若不是,再检查其是否是本地函数。 又有人开始编造原理了吧 |
|
返回顶楼 | |
发表时间:2008-05-08
挺细心的啊
——先检查其是否是本地函数,若不是,再检查其是否为伪对象obj的方法 看来还不能偷懒编辑一下 |
|
返回顶楼 | |