zoukankan      html  css  js  c++  java
  • call、apply、bind的区别

    call、apply、bindfunction自带的方法作用是改变function中的this指向
     
    call、apply、bind共同点:
    (1)改变functionthis对象的指向
    (2)第一个参数都是this要指向的对象
    (3)后续参数继续传参
     
    各自特点:
    call:接受连续参数
    apply:接受数组参数
    bind:不会立即执行,再次调用才执行
    apply、call作用完全一样只是接受参数方式不太一样
    举个例子:
    var a = {
        name : "Tom",
        sex : true,
        age : 18,
        qqq : function(school,grade) {
            console.log(
                "名称:"+this.name + " ;" +
                "性别:"+this.sex + " ;" +
                "年龄:"+this.age + " ;" +
                "学校:"+school + " ;" +
                "年级:"+grade + " ;" 
            )
        }
    }
    var b = {
        name : "Anny",
        sex : false,
        age : 17
    }
    
    // b "继承" a 的属性和方法。绑定后会立即执行函数
    
    a.qqq.call(b,"实验小学","一年级"); // 接受连续参数
    
    a.qqq.apply(b,["实验小学","一年级"]); // 接受数组参数
    
    var c = a.qqq.bind(b); // 不会立即执行
    c("实验小学","一年级") // 再次调用就开始执行
    
    a.qqq.bind(b)("实验小学","一年级") // 这样子写也行(反正也是调用)

    过程解释:

    最后推荐一些我学习call、apply、bind时收藏的一些写的不错的文章:
    https://www.cnblogs.com/pssp/p/5215621.html#

    https://www.cnblogs.com/libin-1/p/6069031.html

  • 相关阅读:
    time模块
    time模块,计算时间差
    re模块
    Python之常用文件操作
    Django运行错误常见问题及解决方法1
    用JetBrains PyCharm 2017.2创建运行Django程序
    wsgi Python的WEB框架
    django模块安装环境变量
    Django
    DOM
  • 原文地址:https://www.cnblogs.com/konghaowei/p/11133930.html
Copyright © 2011-2022 走看看