函数在定义的时候不会影响它的this指向,只有在调用的时候选择不同的调用方式,才会决定你this指向何处。

在独立函数调用的时候,this指向window,在调用挂载在window的函数时,前面的window可以省略不写,

    function foo() {console.log(this);//此处this指向window}foo()

严格模式下,独立函数this的指向是undefined,不再是window

"use strict"

在对象调用方法时,this指向的是调用者

 function fn() {console.log(this); //此处的This指向obj}let obj = {name: "靓仔",}obj.fo = fn;obj.fo()//等价于let obj = {name: "靓仔",foo() {console.log(this);}}obj.foo()

但是用一个变量给对象的方法赋值的时候

  let obj = {name: "靓仔",foo() {console.log(this);}}let s = obj.foo //s是挂载在window上的变量,指向windows() //等价于function s() {console.log(this);}

构造函数里的this指向的就是事件本身

  function stu(a) {console.log(this); //指向stu {}}let s = new stu("靓仔") //stu

点击事件的this指向的时事件对象,就是触发这个点击事件的事件源

 let btn = document.querySelector("#btn")btn.onclick = function() {console.log(this); //button}
  function fn() {console.log(this);}let arr = [12, 3, 5, 6, 345, 765, 234, 1234, 123, 56, 567, 67, 567, 67, 67]arr.forEach(function() { //foreach里面可以写两个参数,一个是遍历的数组,另一个是this的指向,写啥指啥console.log(this); //全是fn}, fn)

call,apply ,bind的使用改变this指向

​function so(a, b, c, d) {console.log(this);console.log(a, b, c, d);}function father() {console.log();}// so.call(father,  "靓仔", 18, 180, "牛")//call方法传字符串变量so.apply(father, ["靓仔", 18, 180, "牛"])//apply传一个数组// var s = so.bind(father, "靓仔", 18, 180, "牛")//bind方法不会调用函数,会产生一个函数,然后再手动调用      // s()​

箭头函数是没有this指向的,没有this就往父级找,如果父级也是箭头函数就继续往父级找,就形成作用域链,直到找到全局作用域

 function req(u, c) {let arr = ["靓仔", "头头", "是我"]c(arr)}let obj = {data: [],newo: function() {req("/login", name => name.map(element => _this.data.push(element)))}}obj.newo()console.log(obj.data);

函数的this指向,call,apply bind改变this指向相关推荐

  1. JS-面向对象-改变This的指向---使用call方法改变this的指向 / 使用apply方法改变this的指向 / 使用bind方法改变this的指向

    使用call方法改变this的指向 <!DOCTYPE html> <html lang="zh"><head><meta charset ...

  2. Bind Call Apply(改变this指向)

    Bind & Call & Apply bind/call/apply三个方法都是可以改变对应函数的this指向的, bind方法通过该函数调用并且返回一个新的函数, 新的函数已经修改 ...

  3. this指向,认识与理解this指向

    this指向 故心故心故心故心小故冲啊 文章目录 this指向 下面从几方面来理解this 1.简单函数 2.内置函数 3.回调函数 4.数组 5.对象 6.改变对象指向(call apply bin ...

  4. ES6/03/函数的定义方式和调用方式,函数内的this指向,改变函数中this指向的三个方法(call(),apply(),bind())

    函数的定义方式 1,自定义函数(命名函数) function fun(){}; 2,函数表达式(匿名函数) var fun =function(){}; 3,利用new Function( '参数1' ...

  5. 前端改变this指向的方法有哪些?如何判断this指向?

    bind.call.apply.箭头函数.new.这些都可以改变this指向,他们之间的区别是 1.call 和 apply 的this指向 call 和 apply其实是一样的,区别在于传参的时候参 ...

  6. 如何改变this指向?

    如何改变this指向? 在接触this指向问题,相信很多同学都面临this指向的问题,有些时候我们在对象方法内部使用this.而并不想让this指向当前本对象,这时候该怎么办呢?答案就是改变this指 ...

  7. this指向 改变this指向

    1:全局下的 this 指向window 2:函数中的this 谁调用指向谁 3:事件处理函数中 this 谁触发指向谁 4:对象中this 默认指向当前对象 5:箭头函数中无this 但是如果箭头函 ...

  8. JavaScript基础--改变this指向的方法

    1. this指向 this随处可见,一般谁调用,this就指向谁.this在不同环境下,不同作用下,表现的也不同. 以下几种情况,this都是指向window的: ① 全局作用下,this指向的是w ...

  9. 为什么要改变this指向?

    首先this是什么? 按照官方正规的解释,this关键字的意义被解释为"指向当前对象的引用".this是面向对象语言中的一个重要概念,在JAVA,C++等面向对象的语言中,this ...

最新文章

  1. 获取GridView中的某列值
  2. 分布式事务篇——第一章:分布式事务前言
  3. web项目性能优化--网络、js、渲染
  4. 实现秒杀的几个想法(续)
  5. Python rabbitmq的使用(五)
  6. 深入理解HashMap+ConcurrrentHashMap扩容的原理
  7. 怎么颈椎和秃头都扯上我,程序员:我太难了…
  8. bbs小项目整理(八)(总结、源码分享)
  9. 基于Java Web的网络考试系统
  10. 局域网桌面共享会议该如何实现屏幕共享?
  11. 对可道云KodExplorer去掉版权简单破解方法
  12. 图像处理之直方图均衡和直方图匹配
  13. 社会工程学攻击选项是_什么是社会工程学,如何避免?
  14. 百度有啊前端框架分析(自定义事件)
  15. dwf怎么合成一个_油菜素内酯合成基因DWF1、DET2影响毛白杨木质部形成
  16. 计算机三级信息安全技术知识点总结(6)
  17. Linux编辑器-gcc/g++使用
  18. 八、DOM(一) -- DOM对象
  19. 一路两输入正与门SN74AHC1G08学习
  20. 美国纽约大学计算机专业排名,纽约大学计算机科学排名怎么样?专业好不好?

热门文章

  1. html代码设置span字体颜色,怎么用span css设置div内部分字体颜色?
  2. AutoCAD模型空间多视口之叠加视口应用
  3. IBM服务器setup信息讲解,ibm-pc服务器培训讲义.docx
  4. JAVA-JDK配置说明
  5. matlab中triangle函数用法,matlab triangle函数格式
  6. 坚果云和亿方云相比哪个好用?
  7. IOS视频直播:高仿腾讯旗下NOW直播映客直播类型
  8. 对话电通安吉斯副总裁陈家驹:企业如何破解虚假广告刷量难题?
  9. 如何提升应届生职场竞争力
  10. python爬取站_python爬取某站磁力链