zoukankan      html  css  js  c++  java
  • JavaScript call() 和 apply()

    1.ECMAScript 规范给所有函数都定义了apply 和 call 方法

    2.apply() 和 call() 作用一样,传参数形式不一样 

    apply()

        apply()方法传入两个参数,一个是函数上下文的对象,一个是该函数传入的数组形式的参数

    var Person = {
       name :'Lucy'   
     }
    function getName(name1,name2){
       console.log(this.name + name1 + name2);    //Lucy Tom Tim
    }
    getName.apply(Person,['Tom','Tim']);  //第一个参数指向person对象 ,this.name 指向 person.name ; 第二个参数是一个数组,数组中的元素分别代表函数的参数一和参数二

    call()

      call()方法传入两类参数,第一个参数是上下文对象,第二类参数以列表的形式传入

    var Person = {
       name :'Lucy'   
     }
    function getName(name1,name2){
       console.log(this.name + name1 + name2); //Lucy Tom Tim
    }

    getName.call(Person,'Tom','Tim');

    两个方法的作用:

    • 改变this指向
    • 借用别的对象的方法
    • 调用函数

    1.如上 call()方法例子,第一个参数传入的person对象,getName函数中的this便指向了 person对象

    2.借用别的对象的方法

    var Person1 = function(){
      this.name = 'LiLi';
     }
    var Person2 = function(){
       this.getname = function(){
        console.log(this.name); // 'LiLi'   此时Person1中的this 变成 Person2 中的this
      }
      Person1.call(this); 
    }
    var person = new Person2; person.getname();

    3.调用函数

    apply 和call 方法都能使函数立即执行,因此可以调用函数

    function getName(){
       console.log('My name is xxt');
    }
    getName.call();
  • 相关阅读:
    正则表达式 常见的简写形式
    Git 常用命令
    利用npm安装删除模块
    发送验证码设置settime(验证码倒计时)
    30分钟后过期(订单过期)
    JS 获取当前日期时间以及其他操作
    判断终端
    一个轻量、可拓展、针对手机网页的前端开发者调试面板vConsole
    数据结构与算法----树(中)
    数据结构与算法----树(上)
  • 原文地址:https://www.cnblogs.com/xxta/p/10840578.html
Copyright © 2011-2022 走看看