this指向,认识与理解this指向
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.指针的定义: 首先假设有一个内存单元,每一个内存单元对应着一个相应的编号,即为该内存单元的地址,该地址也就是我们所说的指针. 2.指针 ...
- 前端面试——如何理解this指向?
目录 前言 一.this在不同函数中的指向 1.普通函数this指向全局对象 2.构造函数指向new这个对象 3.箭头函数指向上一级作用域 4.对象函数指向这个对象 5.数组中有函数,指向这个数组 6 ...
- c++17(26)-数组、二维数组的指针、指向数组的指针、指向数组的指针的指针
#include <iostream> #include <string.h> using namespace std;void setC1(int a[],int size) ...
- 指向数组的指针与指向数组首元素的指针
我的主力博客:半亩方塘 以下原创内容,转载请注明地址,欢迎对以下内容提供不同参考意见: 指向数组的指针与指向数组首元素的指针究竟有什么区别呢?有人说,这二者不是一回事么?它们就是同一个东西啊!然而,事 ...
- 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结点和 node 结点).pat ...
- C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变
C++ 指向子类的指针转型为指向父类类型指针之后指向的对象地址不变 例子: class A{int a;int b; };class B:public A{int c; };int main(){B* ...
- js this指向问题,同级this指向同级,非同级this指向全局
重点:this指向问题,同级this指向同级,非同级this指向全局 可以把变量name.obj.s看为同级 obj.name.obj.getName 看为同级 test 单独一级 层级关系 name ...
- 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
- this指向和如何改变this指向 (详解)
注:颜色标识为重要字眼. 目录:-this详解 -改变this指向的方法 一.this概述 它是JS的关键词,是一个代词"指代不明",需要代码执行过程中根据 ...
最新文章
- Denoising DNA deep sequencing data—high-throughput sequencing errors and their correction
- 2017-2018-1 20155336 《信息安全系统设计基础》加分作业:实现mypwd
- 教程-Delphi中Spcomm使用属性及用法详解
- vsftp:425 错误
- 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
- python基本数据类型包括哪些_python入门3——基本数据类型
- session存储的替代方法redis
- STL源码学习之空间配置
- 回归返回2个以前标签_大本回归蝙蝠侠,同期将出现2个布鲁斯,网友:可以互相串个门...
- 模型操作_77个典型岗位员工胜任素质模型操作指导手册
- LibMeshEquationSystem 类接口
- 创业失败反思二:领导不认错,不反省
- java实验报告心得_java实验报告心得体会.doc
- 【独立小程序商城】THINKPHP带后台管理+MYSQL数据库微信小程序商城系统源码
- mvn命令及生命周期
- Vmware打开服务器的时候提示“该虚拟机似乎正在使用中。”
- ubuntu16.04 安装拼音输入法
- 硬实时RTLinux安装配置详解 (一):准备工作
- geoserver(xml和json带属性互转,获取工作区-图层-样式-更新样式(解决乱码问题))
- ckeditor5使用