// 改变函数的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. vscode使用npm安装依赖报错

    1.报错信息 npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Node\node_cache_cacache\index-v5\4 ...

  2. vue 插件(swiper)使用

    两种方法: 1... 打开https://www.swiper.com.cn/download/index.html 下载css,js... 把js,css引入public里面的index.html文 ...

  3. Oracle nullif函数使用

    nullif函数使用 简单来说,就是表达式1的值和表达式2的值进行对比 可以使用''字符 select nullif('','1111') from dual 输出为空 不可以使用null字符 sel ...

  4. 一个开发者自述:我是如何设计针对冷热读写场景的 RocketMQ 存储系统

    简介: 文章中的很多知识点,都是通过云原生编程挑战赛学到的,在一些问题在表述方式.甚至理解上都可能存在一些问题,甚至会有一些谬论:敢于尝试就会犯错,有犯错才会有成长,欢迎各位大佬不舍赐教,多多指正,让 ...

  5. 基于 Mesh 的统一路由在海外业务的实践

    ​简介:本文主要介绍我们最近在利用 Service Mesh 架构解决海外业务问题中一些实践和价值探索.我们在海外业务引入 Mesh 架构过程中,充分利用 Istio 的基于 yaml 来描述和定义路 ...

  6. 2019-8-31-dotnet-core-使用-PowerShell-脚本

    title author date CreateTime categories dotnet core 使用 PowerShell 脚本 lindexi 2019-08-31 16:55:58 +08 ...

  7. 13.prometheus监控tengine(无用)

    一.环境准备 1.1 docker安装tengine带nginx-module-vts模块(二选一) mkdir /data/ -p cd /data/ # 通过git clone下载已经创建好的do ...

  8. .NET CORE 完美支持AOT 的 ORM SqlSugar 教程

    1.AOT适合产场 Aot适合工具类型的项目使用,优点禁止反编 ,第一次启动快,业务型项目或者反射多的项目不适合用AOT AOT更新记录: 实实在在经过实践的AOT ORM 5.1.4.117 +支持 ...

  9. HEOI2024省选游记

    day 0 上午 没让不跑操的同学帮忙带着包 所以就直接背着跑的操,相当难受 吃完早饭就拿手机来机房了 不得不说看得出来 huge 这届确实打算换一种教学思路 以来就先强调了一堆意料之外的东西 包括但 ...

  10. 机器学习策略篇:详解开发集和测试集的大小(Size of dev and test sets)

    在深度学习时代,设立开发集和测试集的方针也在变化. 可能听说过一条经验法则,在机器学习中,把取得的全部数据用70/30比例分成训练集和测试集.或者如果必须设立训练集.开发集和测试集,会这么分60%训练 ...