zoukankan      html  css  js  c++  java
  • [记录] JavaScript 中的this和call()、apply()方法

    call() 和 apply() 方法
    JavaScript中每个Function对象都有call()和apply()方法
    语法区别:
    function.call( thisObj[, arg1, arg2] );
    function.apply( thisObj[, arguments] ); 

    作用:改变this指向 (用另一个对象替换当前对象)
    区别:传参列表形式不同
    call:接收多个参数,第一个参数是this指向的对象,后面则是一串参数列表;
    apply:只接收两个参数,第一个参数是this指向的对象,第二个则是一个数组;

    #### apply的一些其他巧妙用法:
    1. Math.max 来求数组中最多的值
    Math.max(parm1, parm2, ...); 不支持数组的形式
    Math.max.apply(null, array); 

    2. Array.prototype.push可以实现两个数组的合并
    .push(parm1, parm2, ...); 不支持数组的形式
    arr.push.apply(null, arr2); 
    一般在目标函数需要n个参数列表,而又不接收数组的形式,可以通过apply的方式巧妙的解决这个问题。

    ----------------------------------------

    this
    1. 函数预编译过程中 this => window
    2. 全局作用域里 this => window
    3. call/allpy 可以改变函数运行时this指向
    4. obj.func(); func()里面的this指向obj,谁调用就指向谁


    arguments 
    指向函数自身引用
    argument.callee
    在立即函数中调用自己,实现递归
    var num = (function (n) {
        if(n == 1){
            return 1;
        }
        return n * arguments.callee(n-1);
    }(20));

  • 相关阅读:
    Java拾遗补缺
    Spring boot整合shiro权限管理
    Maven项目使用阿里云的Maven库
    Spring Boot设置上传文件大小
    mysql悲观锁中的共享锁和排他锁
    MySQL命令show full processlist
    log4j配置文件中的additivity属性
    每天一个liunx命令2之rz和sz命令
    数据库锁表及阻塞的原因和解决办法
    Java加密技术(一)—— HMACSHA1 加密算法
  • 原文地址:https://www.cnblogs.com/yuxi2018/p/9477531.html
Copyright © 2011-2022 走看看