继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

使用JS中的Call方法实现继承和多重继承

慕田峪0738999
关注TA
已关注
手记 344
粉丝 88
获赞 494

call方法:


调用一个对象的一个方法,以另一个对象替换当前对象。

call([thisObj[,arg1[, arg2[, [,.argN]]]]])
 

thisObj
 可选项。将被用作当前对象的对象。
 arg1, arg2, , argN
 可选项。将被传递方法参数序列。
 说明
 call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。  

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

obj1.method1.call(obj2,argument1,argument2)
 如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做为参数传入
 

举例说明1:


  <script type="text/javascript">     function add(a,b){ 	   alert(a+b); 	}  	function sub(a,b){ 	   alert(a-b); 	}  	add.call(sub,4,5);   </script>

输出结果为:9,表示把add方法放到sub上使用,然后传入后面相应的参数



 

举例说明2:


  <script type="text/javascript">       function test1(){ 	    this.name="test1"; 		this.method1=function(){ 		   alert(this.name); 		} 	  } 	  function test2(){ 	    this.name="test2"; 	  }  	  var t1=new test1(); 	  var t2=new test2();       t1.method1.call(t2);   </script>

输出结果为:test2,表示把t1的method1方法放到t2中去执行



 

举例说明3:单重继承

  <script type="text/javascript">
       function animal(){
         this.eat=function(){
           alert("动物在吃饭");
         }
       }
       function dog(){
         animal.call(this);
       }
 
       var d=new dog();
       d.eat();
   </script>

输出:动物在吃饭,animal.call(this);表示把animal对象代替了this对象,那么this对象就有了animal中的属性和方法


 

举例说明4:多重继承

  <script type="text/javascript">
       function animal(){
         this.eat=function(){
           alert("动物在吃饭");
         }
       }
 
       function dogClass(){
         this.type="狗类";
       }
       function dog(){
         animal.call(this);
         dogClass.call(this);
       }
 
       var d=new dog();
       d.eat();
       alert(d.type);
   </script>
 

输出:动物在吃饭,狗类,同上,同时dogClass对象也代替了this对象,那么dog中也会有dogClass类中的属性和方法,实现了多重继承
 


 


 


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP