论坛首页 Web前端技术论坛

javascript面向对象技术基础(五)

浏览 13211 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-09  
yunhaifeiwu 写道


你说的
引用f.call(o, 1, 2);
作用就相当于
o.m = f;
o.m(1,2);
delete o.m;

揭示f.call的含义,这是从等价代码的角度上揭示的。如果用文字进行描述又是怎样的呢?
msdn上的描述很准确,很严密,但是理解有点困难。
因此我站到我测试得到的结果,进行总结归纳: 
  f.call(o,1,2)的含义是:
  1 调用了函数f .其实际参数是 1,2
  2 在f函数执行时也仅在f函数执行时,f中的this参数中具有o中的属性。如果原来有与o相同的属性,
则会被覆盖掉。

申明:以上仅仅是个人对call的自我总结,目的是辅助理解,准确的定义请看相关权威教材。三人行必有

我师,如果有误,请指出,我会及时更正。在技术论坛上,谢绝因观点不一样,而进行人身攻击。



http://msdn.microsoft.com/zh-cn/magazine/cc163419.aspx
下面这句话是从上面提到的文章中摘录出来的:
JavaScript 中的函数是对象.每个函数对象都有一个名为 call 的方法,它将函数作为第一个参数的方法进行调用。就是说,作为函数第一个参数传递给 call 的任何对象都将在函数调用中成为“this”的值.

可能是因为javascript是一种弱类型的语言,没有那么严格的要求,所以才导致我们对问题的理解不同.当时写这些东西的时候我也没有用调试工具来调试,所以没有想到你提到的那一点.上面的文章也是从msdn上找的,不知道是不是你说的那一篇.大家参考一下,具体怎么理解就看个人了.
0 请登录后投票
   发表时间:2008-12-13  
很不错,适合js初学者,不知道有没有相关的书籍?
0 请登录后投票
   发表时间:2008-12-16  
我很就不回复了 ,但看到你写的文章,不得不回复,写的真好,我学js,总共才有两次感悟,其中第二次是看了你的文章后,谢谢诶!
0 请登录后投票
   发表时间:2008-12-16  
yuxiaojicai 写道

我很就不回复了 ,但看到你写的文章,不得不回复,写的真好,我学js,总共才有两次感悟,其中第二次是看了你的文章后,谢谢诶!

但愿我的文章不会给你造成误解,多看看别人的文章,比较一下。
0 请登录后投票
   发表时间:2008-12-17  
是否还有下文  期待 继续
0 请登录后投票
   发表时间:2008-12-18  
謝謝樓主,辛苦了.寫的很好,淺顯易懂!!
0 请登录后投票
   发表时间:2008-12-19  
daoyongyu 写道
謝謝樓主,辛苦了.寫的很好,淺顯易懂!!

同感同感
0 请登录后投票
   发表时间:2008-12-24  
楼主第一次让我感觉到js的可怕 呵呵
0 请登录后投票
   发表时间:2008-12-26  
daoyongyu 写道
謝謝樓主,辛苦了.寫的很好,淺顯易懂!!

这个系列基本看完了。
ps:贴主感觉繁体很帅吗?还是因为是港澳人士?小小的不爽而已。没事没事。
0 请登录后投票
   发表时间:2008-12-29  
楼主的代码有很多错误,很明显的一个就是this的使用,其实this在js中是关联执行时的作用域,而非定义时的作用域,呵呵,好好看看,别误导新手
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics