// 改变函数的this指向
        // 先记住一句话 : 箭头函数不能改变this指向
        // 语法1: call() 方法
        //        在调用函数时使用
        //        在调用的函数名称后,添加 点 call
        //        调用函数的()中,应该赋值实参
        //        第一个实参是,改变的this指向对象
        //        之后的参数是原始函数本身应该具有的函数实参
        // 语法2: apply() 方法
        //        在调用函数时使用
        //        在调用的函数名称后,添加 点 apply
        //        调用函数的()中,应该赋值实参
        //        第一个实参是,改变的this指向对象
        //        第二个参数必须是数组的形式,数组中的数据单元,是原始函数,调用是应该输入的实参
        // 语法3: bind() 方法
        //        生成返回一个新的函数
        //        新的函数,程序等都与原始函数相同,只是this指向不同
        
        // 定义在对象obj1中的函数fun,this指向应该是对象obj1
        const obj1 = {
            name:'张三',
            fun:function(a,b,c,d,e){
                console.log(a,b,c,d,e);
                console.log(this);
            }
        }
        const obj2 = {
            name:'李四',
        }
        // obj1.fun('a','b','c','d','e');
        // 在调用的函数名fun之后,添加 点call
        // 第一个参数是obj2,表示,函数fun的this指向,改变为obj2
        // 第二个参数之后,都是fun函数本身,在调用时,应该输入的实参
        // obj1.fun.call(obj2,100,200,300,400,500);
        // 在调用的函数名fun之后,添加 点apple
        // 第一个参数是obj2,表示,函数fun的this指向,改变为obj2
        // 第二个参数,以数组的形式,输入原始函数fun,执行时必须输入的实参
        // obj1.fun.apply(obj2 , [100,200,300,400,500] );
        // 不是在指定调用 函数 fun
        // 是在生成一个新的函数,要使用变量存储新的函数,或者绑定给其他程序
        
        // 新的函数,只是this改变,与原始函数fun,其他都一样
        // fun有5个形参,新函数f 也有5个形参
        // 执行时 需要输入 5个实参
        // 如果,在执行bind时,没有输入实参,在调用时就必须要输入实参
        // const f = obj1.fun.bind(obj2);
        // f(1,2,3,4,5);
        // 如果,在执行bind时,输入了实参,那么就会执行输入的实参
        // 调用时再输入数据无效
        const f = obj1.fun.bind(obj2 , 1,2,3,4,5);
        f(100,200,300,400,500);
        // 我们一般执行bind时,不会输入实参,便于灵活输入实参
        // 特殊情况下会绑定实参
        //     绑定函数名称时,无法输入实参
        //     可以使用bind方法
        //     this指向不改变,还是原始函数的this指向
        //     通过bind方法,绑定执行时需要的实参

改变函数中的this指向的更多相关文章

  1. 改变函数中的 this 指向——神奇的call,apply和bind及其应用

    在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

  2. JS回调函数中的this指向(详细)

    首先先说下正常的this指向问题 什么是this:自动引用正在调用当前方法的.前的对象. this指向的三种情况 1. obj.fun()     fun中的this->obj,自动指向.前的对 ...

  3. js闭包中的this(匿名函数中的this指向的是windows)

    js闭包中的this(匿名函数中的this指向的是windows) 一.总结 1.普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2.让匿名函数中的thi ...

  4. 如何改变函数内部 this 的指向

    一.函数内 this 的指向 1. this 的指向是当调用函数时确定的,调用的方式不同,this 的指向也就不同. 1.1 this 一般是指向调用者. 函数类型 this 的指向 普通函数 Win ...

  5. Javascript回调函数中的this指向问题

    使用js中的定时器(setInterval,setTimeout),很容易会遇到this指向的问题. 直接上例子: 1 var name = 'my name is window'; 2 var ob ...

  6. React之函数中的this指向

    我们都知道在React中使用函数时,有两种写法,一是回调函数,二是直接调用,但需要在构造函数中绑定this,只有这样,函数中的this才指向本组件 总结一下没有绑定this的函数中的this指向 不管 ...

  7. JS的一些总结(函数声明和函数表达式的区别,函数中的this指向的问题,函数不同的调用方式,函数也是对象,数组中的函数调用)

    一.函数声明和函数表达式的区别: 函数声明放在if——else语句中,在IE8中会出现问题 函数表达式则不会 <script> if(true){ function f1(){ conso ...

  8. 彻底搞清函数中的this指向

    近日阅读<javascript设计模式与开发实践> 书中的apply和call调用函数层出不穷,很多妙用: 函数中的this是根据调用方式来决定的 函数调用方式有4中 1.直接调用 a(. ...

  9. 普通函数跟箭头函数中this的指向问题

    箭头函数和普通函数的区别如下. 普通函数:根据调用我的人(谁调用我,我的this就指向谁) 箭头函数:根据所在的环境(我再哪个环境中,this就指向谁) 一针见血式总结: 普通函数中的this: 1. ...

  10. 箭头函数,闭包函数中的this指向

    在javscript中,this 是在函数运行时自动生成的一个内部指针,它指向函数的调用者. 箭头函数有些不同,它的this是继承而来, 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象. ...

随机推荐

  1. 第一次blog

    前言:我在大一上学期学习了c语言,然后在下学期学习了第二门语言java,因为之前c语言学的挺一般的,然后在这学期学习java感觉还是挺不简单的,要自学很多东西,在这段时间里,我学习了JAVA的基本语法 ...

  2. 剑指offer29(Java)-顺时针打印矩阵(简单)

    题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5 ...

  3. Apsara Stack 技术百科 | 数字化业务系统安全工程

    ​简介:数字化平台已经与我们生活紧密结合,其用户规模庞大,一旦系统出现故障,势必会造成一定生活的不便.比如疫情时代,健康码已经成为人们出门必备的条件,一旦提供健康码服务平台出现故障,出行将变得寸步难行 ...

  4. OpenYurt 深度解读|开启边缘设备的云原生管理能力

    ​简介: 北京时间 9 月 27 号,OpenYurt 发布 v0.5.0 版本.新发布版本中首次提出 kubernetes-native非侵入.可扩展的边缘设备管理标准,使 Kubernetes 业 ...

  5. 2.docker-compose安装prometheus

    一.docker-compose安装 前期准备 # docker配置文件 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json < ...

  6. 【python爬虫案例】爬取微博任意搜索关键词的结果,以“唐山打人”为例

    目录 一.爬取目标 二.展示爬取结果 三.讲解代码 四.同步视频 4.1 演示视频 4.2 讲解视频 五.附:完整源码 一.爬取目标 大家好,我是马哥. 今天分享一期python爬虫案例,爬取目标是新 ...

  7. 11、操作系统安全加固-Windows 加固

    1.账号管理与认证授权 1.1.按用户类型分配账号 目的:根据系统要求,设定不同账户和组,管理员.数据库sa.审计用户.来宾用户等 实施方法: 打开本地用户和计算机管理器 或 打开运行,输入 lusr ...

  8. 模型评测-书生浦语大模型实战营学习笔记7&大语言模型12

    大语言模型学习-12.模型评测 书生浦语大模型实战营学习笔记7 视频教程特别像广告,所以这篇博客参考了很多其他内容给大家参考,主要是下面几个页面: https://zhuanlan.zhihu.com ...

  9. csapp-bomblab(自信满满版)

    反汇编bomb文件 要查看机器代码文件的内容,有一类称为反汇编器(disassembler,assembler是汇编程序,dis-加在某些词语前表示相反的意思)的程序非常有用.这些程序根据机器代码产生 ...

  10. Ubuntu下MPICH的安装与配置

    原创直达链接 一.MPICH的下载与安装 MPI安装文件下载地址: 博客下载地址 或 官网地址 可以下载3.4.2版本的,本文就是3.4.2版本 1.解压: sudo tar - zxvf mpich ...