• js中apply和call方法


    1.apply的使用,call的使用改变this对象

    //apply和call使用
    	function Person(age,sex){
    		this.age=age;
    		this.sex=sex;
    	}
    	//通过原型添加方法
    	
    	Person.prototype.sayHi=function(x,y){
    		console.log("你好啊"+this.sex);
    		return 1000;
    	}
    	var person=new Person(10,"男");
    	person.sayHi();
    	//
    	function Student(name,sex){
    		this.name=name;
    		this.sex=sex;
    	}
    	//此时改变了原型对象的问题,
    	var stu=new Student("小明","人妖");
    	var r1=person.sayHi.apply(stu,[10,20]);//改变了this对象给stu添加了sayHi对象
    	var r2=person.sayHi.call(stu,10,20);
    

      

    2.apply和call使用总结

     //apply和call的使用方法
        /*
        * apply的使用语法
        * 函数名字.apply(对象,[参数1,参数2,...]);
        * 方法名字.apply(对象,[参数1,参数2,...]);
        * call的使用语法
        * 函数名字.call(对象,参数1,参数2,...);
        * 方法名字.call(对象,参数1,参数2,...);
        *
        * 作用:改变this的指向
        * 不同的地方:参数传递的方式是不一样的
        *
        * 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
        *
        * */
    //apply和call都可以改变this的指向                                                        
        //函数的调用,改变this的指向                                                           
            function f1(x,y) {                                                      
              console.log((x+y)+":===>"+this);                                      
              return "这是函数的返回值";                                                    
            }                                                                       
            //apply和call调用                                                          
            var r1=f1.apply(null,[1,2]);//此时f1中的this是window                         
            console.log(r1);                                                        
            var r2=f1.call(null,1,2);//此时f1中的this是window                            
            console.log(r2);                                                        
            console.log("=============>");                                          
           // 改变this的指向                                                             
            var obj={                                                               
              sex:"男"                                                               
            };                                                                      
          //  本来f1函数是window对象的,但是传入obj之后,f1函数此时就是obj对象的                             
            var r3=f1.apply(obj,[1,2]);//此时f1中的this是obj                             
            console.log(r3);                                                        
            var r4=f1.call(obj,1,2);//此时f1中的this是obj                                
            console.log(r4);                                                        
    	                                                                              
    
  • 相关阅读:
    JNI编程基础
    C语言指针学习
    C语言字符串以及二维数组指针
    CPP数据类型本质以及变量本质分析
    junit在idea中的使用(2)--实践篇
    idea创建maven项目
    SourceTree的基本使用---团队开发/参与开源
    SourceTree的基本使用---基本介绍/本地开发
    流量分析系统---启动流程
    流量分析系统---redis
  • 原文地址:https://www.cnblogs.com/liushisaonian/p/9460585.html
Copyright © 2020-2023  润新知