this指向

故心故心故心故心小故冲啊


文章目录

  • this指向
  • 下面从几方面来理解this
  • 1、简单函数
  • 2、内置函数
  • 3、回调函数
  • 4、数组
  • 5、对象
  • 6、改变对象指向(call apply bind)
  • 总结

下面从几方面来理解this

1、简单函数

 //简单函数 /this ===windowfunction f(){console.log(this); //window}

2、内置函数

  //内置函数  this ===windowsetInterval(function(){console.log(this); //window},2000)

3、回调函数

 //回调函数(一个函数被作为参数传递给另一个函数)  this ===windowfunction f(callback,v){callback(v)}f(function(v){console.log(this)},'hello'); //this ===window

4、数组

 //数组 this的指向看调用者function f(){console.log(this);};var arr = [f,4,5,6];arr[0](); //this === arrvar o =  arr[0];o(); //this === window

5、对象

//对象 this的指向看调用者function f(){console.log(this);};var obj ={};obj.name='xm',obj.init=f,obj.init();  //obj调用了 所以this就是obj//字面量方式对象var obj2 = {name:'xm2',init:f,}obj2.init(); //obj2调用了 所以this就是obj2//构造函数function Init(name){this.name=name,this.action=function(){console.log(this);}}var xm = new Init('xm');xm.action(); //this === Init{name='xm',action:f}  说明:this 指向的是新创建的对象, 而不是构造函数本身

6、改变对象指向(call apply bind)

 //改变this的指向(apply call bind) apply和call 只是传的参数不一样  apply传的是数组  call直接传var a = 10;function f(x1, x2) {console.log(this.a + " " + x1 + " " + x2)}var obj = {a: 200,action: f}var obj2 = {a: 6666,}//1不改变this指向obj.action(1, 2)  //200 1 2  this指向的是obj//2使用apply改变this指向  obj.action.apply(window, [1, 2]) //10 1 2  apply改变this指向为window 所以this指向window//3使用call改变this指向  obj.action.call(window,1, 2) //10 1 2  call改变this指向为window 所以this指向window//4使用bind改变this指向  绑定this 也是改变作用域 绑定后不能改变this指向var t = obj.action.bind(obj2,1,2); t();  //6666 1 2    console.log(t.apply(window, [1, 2]));  //6666 1 2

总结

this指向谁调用它就指向谁

this指向,认识与理解this指向相关推荐

  1. 指针,指针变量,指针变量指向的一些理解

    对于指针,指针变量,指针变量(通常简写成指针)指向的一些理解 1.指针的定义: 首先假设有一个内存单元,每一个内存单元对应着一个相应的编号,即为该内存单元的地址,该地址也就是我们所说的指针. 2.指针 ...

  2. 前端面试——如何理解this指向?

    目录 前言 一.this在不同函数中的指向 1.普通函数this指向全局对象 2.构造函数指向new这个对象 3.箭头函数指向上一级作用域 4.对象函数指向这个对象 5.数组中有函数,指向这个数组 6 ...

  3. c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针

    #include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...

  4. 指向数组的指针与指向数组首元素的指针

    我的主力博客:半亩方塘 以下原创内容,转载请注明地址,欢迎对以下内容提供不同参考意见: 指向数组的指针与指向数组首元素的指针究竟有什么区别呢?有人说,这二者不是一回事么?它们就是同一个东西啊!然而,事 ...

  5. 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结

    假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...

  6. C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变

    C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变 例子: class A{int a;int b; };class B:public A{int c; };int main(){B* ...

  7. js this指向问题,同级this指向同级,非同级this指向全局

    重点:this指向问题,同级this指向同级,非同级this指向全局 可以把变量name.obj.s看为同级 obj.name.obj.getName 看为同级 test 单独一级 层级关系 name ...

  8. char * const p; //常量指针,p的值不可以修改  char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p

    char * const p; //常量指针,p的值不可以修改 char const * p://指向常量的指针,指向的常量值不可以改 const char *p: //和char const *p

  9. this指向和如何改变this指向 (详解)

    注:颜色标识为重要字眼.  目录:-this详解            -改变this指向的方法 一.this概述 它是JS的关键词,是一个代词"指代不明",需要代码执行过程中根据 ...

最新文章

  1. Denoising DNA deep sequencing data—high-throughput sequencing errors and their correction
  2. 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
  3. 教程-Delphi中Spcomm使用属性及用法详解
  4. vsftp:425 错误
  5. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
  6. python基本数据类型包括哪些_python入门3——基本数据类型
  7. session存储的替代方法redis
  8. STL源码学习之空间配置
  9. 回归返回2个以前标签_大本回归蝙蝠侠,同期将出现2个布鲁斯,网友:可以互相串个门...
  10. 模型操作_77个典型岗位员工胜任素质模型操作指导手册
  11. LibMeshEquationSystem 类接口
  12. 创业失败反思二:领导不认错,不反省
  13. java实验报告心得_java实验报告心得体会.doc
  14. 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
  15. mvn命令及生命周期
  16. Vmware打开服务器的时候提示“该虚拟机似乎正在使用中。”
  17. ubuntu16.04 安装拼音输入法
  18. 硬实时RTLinux安装配置详解 (一):准备工作
  19. geoserver(xml和json带属性互转,获取工作区-图层-样式-更新样式(解决乱码问题))
  20. ckeditor5使用

热门文章

  1. (出海必备)Android三方登录之Google登录
  2. Android ListView下拉刷新
  3. Oracle相隔天数日期相减计算
  4. 越来越多的Java程序员转行Java大数据...
  5. JDK、JRE、eclipse安装教程
  6. 【愚公系列】2022年11月 微信小程序-优购电商项目-授权页面
  7. python中算术位移运算
  8. 如何检查并清除挖矿程序
  9. stm32入门(四): 串口
  10. 除了ARM架构,还有其他的架构吗?有没有可能开发出比ARM架构还好的? RISC-V是未来的趋势吗?