【this指向的学习,以及修改this指向的方法】


目录

一、this 指向:谁调用指向谁

1、全局中指向 window

2、普通函数 this 指向最后调用的(函数在声明的时候是没有 this 指向的,只有在调用的时候有this 指向,并且谁最后调用指向谁)

3、构造函数中,this 指向new出来的实例(比如 vue 内的 this 都指向 vue的实例化)

4、箭头函数不会改变 this 指向;我通常在请求完接收数据的时候,会写成箭头函数

二、强制性改变 this 指向:call    apply    bind

区别:

1、call 和 apply 会直接调用函数,而 bind 不会调用函数,需要函数重新调用

2、参数的区别:


一、this 指向:谁调用指向谁

1、全局中指向 window

2、普通函数 this 指向最后调用的(函数在声明的时候是没有 this 指向的,只有在调用的时候有this 指向,并且谁最后调用指向谁)

    let obj = {name: '张三',fn() {console.log(this)//{name: '张三', fn: ƒ}fn: ƒ fn()name: "张三"[[Prototype]]: Object}}obj.fn()function fn() {console.log(this) // window}let btn = document.getElementById('btn')btn.onclick = function() {console.log(this)//<button id="btn">点击</button>}

3、构造函数中,this 指向new出来的实例(比如 vue 内的 this 都指向 vue的实例化)

    let obj = {name: '张三',fn() {console.log(this) // objwindow.setTimeout(() => {console.log(this) // obj})}}obj.fn()

4、箭头函数不会改变 this 指向;我通常在请求完接收数据的时候,会写成箭头函数

     document.querySelector('button').addEventListener('click',()=>{console.log(this)// window})

二、强制性改变 this 指向:call    apply    bind

区别:

1、callapply 会直接调用函数,而 bind 不会调用函数,需要函数重新调用

    let obj = {name: '张三',age: 18}function fn() {console.log(this);}fn()fn.call(obj)  //{name:'张三',age:18}fn.apply(obj) //{name:'张三',age:18}fn.bind(obj)()//{name:'张三',age:18}

2、参数的区别:

 .call   ( this 的指向,   参数一,参数二 ......)

                         .apply( this 的指向,[  参数一,参数二 ...... ] )

                         .bind  ( this 的指向 )( 参数一,参数二 ......)

    let obj = {name: '张三',age: 18}function fn(a, b, c) {console.log(this, a, b, c);}fn()fn.call(obj, 1, 2, 3)    //{name:'张三',age:18,a:1,b:2,c:3}fn.apply(obj, [1, 2, 3]) //{name:'张三',age:18,a:1,b:2,c:3}fn.bind(obj)(1, 2, 3)    //{name:'张三',age:18,a:1,b:2,c:3}

在我写代码的时候,通常情况下,我直接 写一个 let  vm =  this

this 指向以及修改this 指向的方法相关推荐

  1. 【C 语言】字符串拷贝 ( 函数形参使用推荐方法 | 凡是涉及 修改指针指向 的操作一律创建新的 指针变量 执行 | 引入 辅助 局部 指针变量 )

    文章目录 一.函数形参使用推荐方法 二.完整代码示例 一.函数形参使用推荐方法 在函数中 , 形参 中的 指针变量 , 不建议直接使用 ; 推荐 在 函数中 , 定义 局部 指针变量 , 接收 形参中 ...

  2. discuz search.php修改,discuz程序如何将热门搜索修改为指向门户搜索的方法

    站长朋友们使用discuz论坛程序建站,细心的站长朋友们发现首页右上角有个热门搜索功能.这个功能的主要作用就是可以让会员们第一时间搜索到本论坛内需要找到的帖子,这样做就给会员朋友们提供了很大的好处,不 ...

  3. 单链表-逆置单链表(修改指针指向且三个指针)

    题意: 采用带头结点的单链表,设计一个算法将其就地逆置,所谓"就地"是指辅助空间O(1). 这里可以有两种方法做: 1.头插法且双指针 2.改变指针指向且三指针 两方法共同点: 头 ...

  4. 修改 this 指向

    文章目录 前言 一.new关键字改变this指向 二. call() 三.apply() 四 .bind() 五.总结 前言 修改 this 指向,四种方法 一.new关键字改变this指向 //构造 ...

  5. JAVAscript中的this指向和this指向的修改

    JAVAscript中的this指向和this指向的修改 this 关键字 一般在函数中使用,表示哪个对象执行了当前函数. 每一个函数内部都有一个关键字是 this . 函数内部的 this 只和函数 ...

  6. this指向和改变其指向的方法

    this笔记(仅作为个人学习使用) 一.this 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象. 下面这个例子,这里的 a() 是被wind ...

  7. 动态链接(指向运行时常量池的方法引用)

    动态链接(指向运行时常量池的方法引用)

  8. php添加成功关闭窗口,php后台保存数据并指向一个关闭layer窗口的方法

    php后台保存数据并指向一个关闭layer窗口的方法 发布时间:2020-08-29 10:13:00 来源:亿速云 阅读:87 作者:小新 这篇文章主要介绍php后台保存数据并指向一个关闭layer ...

  9. 计算机用户文件夹怎么改名称,win10修改用户名文件夹方法_win10怎么改用户文件夹名称-win7之家...

    我们都知道,在win10系统中,用户文件夹通常都是放置在系统中,能够方便用户进行查找,可是近日有些用户总觉得自己电脑中的用户文件夹名称很是普遍,因此就想要进行修改,那么win10怎么改用户文件夹名称呢 ...

最新文章

  1. 科研文献|常见豆类根际的持久微生物组成员:空间、时间和植物基因型的综合分析
  2. Linux:守护进程解析、如何实现守护进程
  3. 太平鸟上云 推动中国服饰行业新零售转型
  4. 工业机器人什么情况下会出现奇点_功夫机器人周全:复合作业机器人规模应用的奇点有多远?...
  5. 【经典回顾】YouTube 深度学习推荐系统的十大工程问题(附论文下载链接)
  6. 烂泥:centos6.4服务器添加新硬盘
  7. 学习sql注入:猜测数据库_学习SQL:删除和更新数据SQL最佳实践
  8. 这个春天我能感觉的到
  9. openCV实现多人脸检测,多眼部检测,完整代码和详细注释
  10. Vue源码解读(个人见解 + 网友理解)
  11. jemalloc 内存分配器 是什么
  12. CDA-分角色用户查询
  13. 系统滴答定时器的应用
  14. 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)
  15. Revit二次开发环境搭建(Revit 2019+Visual Studio 2017)
  16. 跟班学习JavaScript第一天——运算符、数据类型、ECMAScript
  17. 内存和CPU占用率过高,该怎么办?
  18. Android 高级工程师面试(一)
  19. 【课程】大气对流参数
  20. linux css压缩工具下载,JS和CSS的压缩混淆工具(JsCompressor)下载 v3.0

热门文章

  1. 7-2 简单计算器 分数 13分
  2. Python 判断日期为周几,是否工作日,法定假日
  3. Openwrt学习笔记(二)——Flash Layout and file system
  4. 电影《时空骇客》的科学:隐形传输和虫洞
  5. 安装 timescaledb 使用navcat连接 创建 hypertable
  6. Cadence学习:pdk相关
  7. H3C 防火墙策略介绍
  8. CSS中设置字体样式的5种常用属性—让字体设置再无难点
  9. 孤立森林(Isolation Forest)从原理到实践
  10. 【c#】程序的异常捕获