// 改变函数的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. 函数模板 及显式具体化(C++)

    函数模板 将同一种算法应用与不同类型的函数时 #include<iostream> #include<string> template <typename T> v ...

  2. 大型企业数据库服务首选,AliSQL这几大企业级功能你了解几个?

    MySQL代表了开源数据库的快速发展,从2004年前后的Wiki.WordPress等轻量级Web 2.0应用起步,到2010年阿里巴巴在电商及支付场景大规模使用MySQL数据库,再到2012年开始阿 ...

  3. Serverless Kubernetes:理想,现实与未来

    简介: 当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Serverless 容器需要哪些基础设施?阿里云容器服务产品负 ...

  4. 网易数帆Curve加入PolarDB开源数据库社区

    ​简介:Curve社区签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手. Curve社区签署阿里 ...

  5. 重磅官宣:Nacos2.0 发布,性能提升 10 倍

    简介: 继 Nacos 1.0 发布以来,Nacos 迅速被成千上万家企业采用,并构建起强大的生态.但是随着用户深入使用,逐渐暴露一些性能问题,因此我们启动了 Nacos 2.0 的隔代产品设计,时隔 ...

  6. jqGrid--设置单元格字体颜色

    colModel: [ { name: '列名称', index: '列名称', width: 65, sortable: true, resizable: false, cellattr: addC ...

  7. 前端如何操作动态渲染的多个checkbox列表单选

    input[type=checkbox]:after{     content:"";     display:inline-block;     width:16px;      ...

  8. cesium教程1-加载显示地图

    1.完整示例代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  9. C语言:头文件ctype.h的内置函数

    #include <stdio.h> #include <ctype.h>//内置函数的头文件 #include <math.h> int main() { int ...

  10. pageoffice6 实现提取数据区域为子文件(Word拆分)

    在实际的开发过程中,有时会遇到希望提取Word文档中部分内容保存为子文件的需求,PageOffice支持提取Word文档数据区域中的内容为一个Word文件流,在服务器端创建PageOffice的Wor ...