zoukankan      html  css  js  c++  java
  • 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);                                                        
    	                                                                              
    
  • 相关阅读:
    MySQL事物原理及事务隔离级别
    sql中in和exists的原理及使用场景。
    PHP实现多继承
    磁盘inode节点被占满的解决方法
    使用uwsgi和gunicorn部署Django项目
    python自学经验,每天进步一点点
    msyql 5.7安装遇到的坑
    shell 三剑客
    nginx 配置
    websphere 新建profile
  • 原文地址:https://www.cnblogs.com/liushisaonian/p/9460585.html
Copyright © 2011-2022 走看看