asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0

<script>
delete Function.prototype.call;
delete Function.prototype.apply;

Function.prototype.apply = function (obj, argu) {
  var s;
  if (obj) {
   obj.constructor.prototype._caller = this;
   s = "obj._caller";
  } else {
   s = "this";
  }
  var argus = new Array();
  if(!argu)
  return eval(s+"()");
  for (var i=0;i<argu.length;i++)
   argus[i] = "argu[" + i + "]";
  eval("var r = " + s + "(" + argus.join(",") + ");");
  return r;
 }
 
 Function.prototype.call = function (obj) {
  var argu = new Array();
  for (var i=1;i<arguments.length;i++)
   argu[i-1] = arguments[i];
  return this.apply(obj, argu);
 }    
function a(p,q,m){alert(p+q+m);}
Function.prototype.call.apply(a,[null,1,2,3]);
</script>

posted on 2007-04-28 15:32 汪杰 阅读(350) 评论(1)  编辑 收藏 引用 所属分类: javascript

FeedBack:
# re: 对apply的深入理解
2007-06-21 22:07 | 汪杰
<script>
function a(p,q,m){alert(p+q+m);}
Function.prototype.call.apply(a,[null,1,2,3]);
Function.prototype.apply.call(a,null,[1,2,3]);
</script>
上面代码可以验证apply和call函数与js自带的几乎一样  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 467490
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜