首页
学习
活动
专区
圈层
工具
发布

This指向与改变This指向

This指向与改变This指向 This 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。...改变 this 的指向 改变 this 的指向我总结有以下几种方法: 使用 ES6 的箭头函数 在函数内部使用 _this = this 使用 apply、call、bind new 实例化一个对象 例...使用 apply、call、bind 使用 apply、call、bind 函数也是可以改变 this 的指向的, 使用 apply 例 10: var a = { name : "Cherry...使用 call 改变 this 的指向 如果无返回值或者返回一个非对象值,则将 obj 返回作为新对象;如果返回值是一个新对象的话那么直接直接返回该对象。...所以我们可以看到,在 new 的过程中,我们是使用 call 改变了 this 的指向

2.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    执行函数中改变 this 的指向以及方法

    所以,还是改成 执行函数中改变 this 的指向以及方法。 改变 this 的指向的方法和执行 bind,apply,call 都是执行函数时,用来改变 this 的指向。...为什么需要改变这个 this 的指向 需要改变这个 this 的指向,是因为原来的 this 被污染了,需要重新再进行 this 指向,因为,this 指向的是被调用的父级作用域,而如果函数在另一个函数里面执行的时候...这个就需要把 这个 this 的指向改成指向 fighter 这个对象。以下是改变 this 指向的方法。...使用 call 改变 this 指向 call的第一个参数是 this 的指向,后面是一个传入参数的列表。...使用 apply 改变 this 指向 使用 apply 改变 this 指向和 call 改变指向大致上方法是一样的,唯一有不同的就是传参是以单个参数(数组)进行传递,如下图: const fighter

    1.7K61

    js中扩充函数作用域(改变this指向)

    结果分析说明 GetName函数是在全局环境中定义,所以直接调用函数this就指向了全局环境,所以输出Jack。...(注意函数不加后面()的时候,那时候就不是调用,那只是一个包含函数指针的变量) 由于函数执行环境变成了obj对象,所以this只想就指向了obj,所以自然就输出了“Tom”。...函数扩展this对象 es5提供了三个函数非继承的方法,可以直接改变this的指向,但是在书中说是扩充函数作用域,但是我认为改变this指向更贴切一点。...三个方法分别为:apply,call,bing,用法都比较简单,作用也都是改变函数的this指向,下面我就用代码来简单说明一下。...这三个方法功能都是相同,都是改变this指向,只是使用形式上有一点不同,大家可灵活运用。

    3.6K11

    JS改变this指向的三种方法 (转载非原创)

    转载来源: https://www.cnblogs.com/mochenxiya/p/16698139.html一、this指向点击打开视频讲解更加详细this随处可见,一般谁调用,this就指向谁。...,如果在箭头函数中有,则会向上一层函数中查找this,直到window二、改变this指向1、call() 方法call() 方法的第一个参数必须是指定的对象,然后方法的原参数,挨个放在后面。...console.log(a + b);}//使用call() 方法改变this指向,此时第一个参数是 字符串call,那么就会指向字符串callfun.call('call', 2, 3) /...console.log(a + b);}//使用apply() 方法改变this指向,此时第一个参数是 字符串apply,那么就会指向字符串applyfun.apply('apply', [2,...;}//使用bind() 方法改变this指向,此时第一个参数是 字符串bind,那么就会指向字符串bindlet c = fun.bind('bind', 2, 3);c(); // 返回新的方法,需要重新调用

    1.1K00

    我攻克的技术难题:JS中改变this的指向:call()、apply()、bind()

    3种动态指定普通函数中this的指向的方法:call()、apply()、bind() 在之前的学习中,我发现在学习了很多JS方法后,却没有真正的应用起来或者是理解什么时候需要使用这些方法,导致自己很快就遗忘自己所学过的知识...age: 18 } function fn() { console.log(this) } const fun = fn.bind(obj) console.log(fun)应用场景只想改变...this指向,并且不想调用这个函数的比如改变定时器内部的this指向:如果有一个按钮,当我们点击了之后就禁用这个按钮,2秒钟之后又开启这个按钮 发送验证码 总结call()、apply()、bind()都可以改变函数内部的...this指向,但是call传递参数aru1,aru2...形式 apply传递参数arg形式bind区别于其他两种,不会调用函数我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    82232

    MySQL【知识改变命运】01

    SQL的基本分类 DDL【Data Definition Language】 数据定义语⾔,⽤来维护存储数据的结构(库和表级别的) 代表指令: create(创建), drop(删除), alter(改变...:数据库是否加密,MySQL 8.0.16中引⼊的新选项 1:创建一个diayang库 我们再次创建就会出错,因为苦库中已经有一个代名为daiyang的库了 2: ⾃定义⼀个数据库名,如果数据库不存则创建...,会在数据⽬录下⽣成⼀个与数据库同名的⽬录,⽤于保存数据库中所有的数据 4:字符集编码和校验(排序)规则 4.1:查看数据库⽀持的字符集编码 show charset; MySQL8.0默认的字符集编码是...utf8mb4 ,MySQL5.7默认的字符集是 latin1 4.2:查看数据库⽀持的排序规则 show collation; MySQL8.0默认的排序规则是 utf8mb4_0900_ai_ci..., MySQL5.7默认排序规则是 utf8mb4_general_ci 4.3不同的字串集与排序规则对数据库的影响 • utf8mb4_0900_ai_ci 是MySQL8.0引⼊的新规则,

    48710

    MySQL【知识改变命运】10

    这时候就用到了联合查询 2:联合查询就是多个表的组合查询,一次查询涉及两张或则两张以上的表,成为联合查询 1.联合查询在MySQL里面的原理 参与查询的所有表笛卡尔积,结果集在临时表中 实例:创建两张表...所以根据实际情况确定联合查询表的个数 2.练习一个完整的联合查询 2.1.构造练习案例数据 # 课程表 insert into course (name) values ('Java'), ('C++'), ('MySQL...确定连接条件,student表中的class_id与class表中id列的值相等 连接条件,student表中的class_id与class表中id列的值相等 # 在where⼦句中加⼊连接条件 mysql...外连接 • 外连接分为左外连接、右外连接和全外连接三种类型,MySQL不⽀持全外连接。 • 左外连接:返回左表的所有记录和右表中匹配的记录。...mysql> select * from score s1, score s2; 5.2.显⽰所有"MySQL"成绩⽐"JAVA"成绩⾼的成绩信息 首先分为两步进行,先要找到课程的id,java是1,

    47010

    MySQL【知识改变命运】08

    数据库约束是关系型数据库的一个重要约束 主要保证数据插入的有效性(数据本身是否正确,关联关系是否正确) 人工检查数据工作量太大了,在数据库中定义一些约束,那么数据在写入数据库时候,就会帮助我们做一些检查...主键约束 NOT NULL和UNIQUE的结合,可以指定一个或者多个列(复合主键),但是只能有一个主键,有助于数据的查询 POREIGN KEY 外键约束 外键约束关联两张表 CHECK 约束 用于限制或数据库表中的值...列为唯一值; 创建一个表: 我们给id列限制了UNIQUE,id就不能插入重复值,所有当第二次插入数据时候,就报错了,但是可以插入NULL 4:PRIMARY KEY 主键约束 主键约束唯⼀标识数据库表中的每条记录

    66410
    领券