call用法

BlueDestiny, never-online From: http://www.never-online.net, Blog.csdn.net/BlueDestiny
看过BlueDestiny在博客中写的call,apply用法,写得很清楚。但觉得demo不够明显,略加修改。
  1. /*
  2.  call方法JScript参考中的说明:调用一个对象的一个方法,以另一个对象替换当前对象。
  3.  call([thisObj[,arg1[, arg2[, [,.argN]]]]]),但是没有示例
  4.  */
  5.  
  6. // simple call demo
  7. function simpleCallDemo(arg) {
  8.     window.alert(arg);
  9.     this.a="4";
  10. }
  11. function handleSPC(arg) {
  12.   this.a=5;
  13.     simpleCallDemo.call(this, arg);
  14.     alert(this.a);
  15. }
调用handleSPC('helloworldcall')
运行效果:alert helloworldcall , alert 4 ,当在simpleCallDemo.call(this,arg)时,这里的this就被simpleCallDemo取代了.

  1. //call和apply还有一个技巧在里面,就是用call和apply应用另一个函数(类)以后,
  2. //当前的函数(类)就具备了另一个函数(类)的方法或者是属性,这也可以称之为“继承”。看下面示例。 
  3. // inherit
  4. function base() {
  5.     this.member = "never-online";
  6.     this.method = function() {
  7.         window.alert(this.member);
  8.     }
  9. }
  10. function extend() {
  11.   this.member="123";
  12.   this.method=function(){
  13.       alert(this.member+"in extend");
  14.       }
  15.     base.call(this);
  16.     window.alert(member);
  17.     window.alert(this.method);
  18. }
运行效果:alert never-online,alert line06的函数。因为在base.call(this)后,this被函数base取代,以后再出现this就指base函数了.

你可能感兴趣的:(function)