call,apply,方法的使用

简介: //apply和call的使用方法 /* * apply的使用语法 * 函数名字.apply(对象,[参数1,参数2,...]); * 方法名字.apply(对象,[参数1,参数2,.
//apply和call的使用方法
    /*
    * apply的使用语法
    * 函数名字.apply(对象,[参数1,参数2,...]);
    * 方法名字.apply(对象,[参数1,参数2,...]);
    * call的使用语法
    * 函数名字.call(对象,参数1,参数2,...);
    * 方法名字.call(对象,参数1,参数2,...);
    *
    * 作用:改变this的指向
    * 不同的地方:参数传递的方式是不一样的
    *
    * 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
    *
    * */
      //方法改变this的指向
    function Person(age) {
    this.age = age;
    }
    Person.prototype.sayHi = function (x, y) {
    console.log((x + y) + ":====>" + this.age);//是实例对象
    };

    function Student(age) {
    this.age = age;
    }
    var per = new Person(10);//实例对象
    var stu = new Student(100);//实例对象
    //sayHi方法是per实例对象的
    per.sayHi.apply(stu, [10, 20]);
    per.sayHi.call(stu, 10, 20);
    
    function f1(x, y) {
    console.log((x + y) + ":=====>" + this.age);
    }
    //复制了一份的时候,把参数传入到了f1函数中,x===>10,y===>20,null就是this,默认就是window
    //bind方法是复制的意思,参数可以在复制的时候传进去,也可以在复制之后调用的时候传入进去
    //apply和call是调用的时候改变this指向
    //bind方法,是复制的时候,改变了this的指向
        //使用的语法:
    /*
    * 函数名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个函数
    * 方法名字.bind(对象,参数1,参数2,...);---->返回值是复制之后的这个方法
    *
    * */
    //    var ff=f1.bind(null);
    //    ff(10,20);
    
        //通过对象,调用方法,产生数字

    function ShowRandom() {
      this.number=1;
    }
    //添加原型方法
    ShowRandom.prototype.show1=function () {
      //改变了定时器中的this的指向了,本来应该是window,现在是实例对象了
      window.setInterval(this.show2.bind(this),1000);
    };
    //添加原型方法
    ShowRandom.prototype.show2=function () {
      //显示随机数--
      console.log(this.number);
    };
    //实例对象
    var sr=new ShowRandom();
    //调用方法,输出数字
    //调用这个方法一次,可以不停的输出数字
    sr.show1();
目录
相关文章
|
19天前
|
JavaScript 前端开发 开发者
call 方法和 apply 方法的区别是什么?
【10月更文挑战第26天】`call` 方法和 `apply` 方法的主要区别在于参数传递方式和使用场景。开发者可以根据具体的函数参数情况和代码的可读性、简洁性要求来选择使用 `call` 方法还是 `apply` 方法,以实现更高效、更易读的JavaScript代码。
28 2
|
19天前
|
JavaScript 前端开发 开发者
call、bind、apply区别
【10月更文挑战第26天】`call`、`bind` 和 `apply` 方法在改变函数 `this` 指向和参数传递方面各有特点,开发者可以根据具体的需求和使用场景选择合适的方法来实现更灵活和高效的JavaScript编程。
26 1
|
5月前
|
JavaScript 前端开发
call和apply的区别
call和apply的区别
|
5月前
call()与apply()的作用与区别?
call()与apply()的作用与区别?
|
6月前
call()与apply()的作用与区别
call()与apply()的作用与区别
55 1
|
6月前
call\apply\bind详解
call\apply\bind详解
35 0
|
6月前
|
JavaScript 前端开发
call函数和apply函数的区别
call函数和apply函数的区别
53 0
|
JavaScript 前端开发
call和apply与this的关系
call和apply与this的关系
47 0
bind、call、apply 区别
bind、call、apply 区别
78 0
|
前端开发