JavaScript中知而不全的this

JS作用域+this指向 【JavaScript】 js作用域 this指向及关于this指向的面试题 箭头函数和普通函数的this指向区别 阅读详情

 

都说 JavaScript 是一种很灵活的语言,这其实也可以说它是一个混乱的语言。它把 函数式编程 和 面向对象编程 糅合一起,再加上 动态语言 特性,简直强大无比(其实是不能和C++比的,^_^ )。

 

这里的主题是 this ,不扯远了。this 本身原本很简单,总是指向类的当前实例,this 不能赋值。这前提是说 this 不能脱离 类/对象 来说,也就是说 this 是面向对象语言里常见的一个关键字。说的极端点,如果你编写的 JS 采用函数式写法,而不是面向对象式,你所有的代码里 this 会少很多,甚至没有。记住这一点,当你使用 this 时,你应该是在使用对象/类 方式开发,否则 this 只是函数调用时的副作用。

 

JS 里的 this

  • 在 function 内部被创建
  • 指向调用时所在函数所绑定的对象(拗口)
  • this 不能被赋值,但可以被 call/apply  改变

 

以前用 this 时经常担心,不踏实,你不知道它到底指向谁? 这里把它所有用到的地方列出

  1. this 和构造器
  2. this 和对象
  3. this 和函数
  4. 全局环境的 this
  5. this 和 DOM/事件
  6. this 可以被 call/apply 改变
  7. me/self/that/_this 暂存 this
  8. ES5 中新增的 bind 和 this
  9. ES6 箭头函数(arrow function) 和 this

 

1. this 和构造器

this 本身就是类定义时构造器里需要用到的,和构造器在一起再自然不过。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

 * 页签

 *

 * @class Tab

 * @param nav {string} 页签标题的class

 * @param content {string} 页面内容的class

 *

 */

function Tab(nav, content) {

    this.nav = nav

    this.content = content

}

 

Tab.prototype.getNav = function() {

    return this.nav;

};

Tab.prototype.setNav = function(nav) {

    this.nav = nav;

};

Tab.prototype.add = function() {

};

按照 JavaScript 的习惯, this 应该挂属性/字段,方法都应该放在原型上。

 

2. this 和对象

JS 中的对象不用类也可以创建,有人可能奇怪,类是对象的模板,对象都是从模板里 copy 出来的,没有类怎么创建对象? JS 的确可以,并且你完全可以写上万行功能代码而不用写一个类。话说 OOP 里说的是面向对象编程,也没说面向类编程,是吧 ^_^ 。

1

2

3

4

5

6

7

8

9

10

var tab = {

    nav: '',

    content: '',

    getNav: function() {

        return this.nav;

    },

    setNav: function(n) {

        this.nav = n;

    }

}

 

3. this 和函数

首先,this 和独立的函数放在一起是没有意义的,前面也提到过 this 应该是和面向对象相关的。纯粹的函数只是一个低级别的抽象,封装和复用。如下

1

2

3

4

function showMsg() {

    alert(this.message)

}

showMsg() // undefined

定义 showMsg,然后以函数方式调用,this.message 是 undefined。因此坚决杜绝在 纯函数内使用 this,但有时候会这么写,调用方式使用 call/apply

1

2

3

4

5

6

7

8

9

10

11

12

13

function showMsg() {

    alert(this.message)

}

 

var m1 = {

    message: '输入的电话号码不正确'

}

var m2 = {

    message: '输入的身份证号不正确'

}

 

showMsg.call(m1) // '输入的电话号码不正确'

showMsg.call(m2) // '输入的身份证号不正确'

用这种方式可以节省一些代码量,比如当两个 类/对象 有一共相似的方法时,不必写两份,只要定义一个,然后将其绑定在各自的原型和对象上。这时候其实你还是在使用对象或类(方式1/2),只是间接使用罢了。

 

4. 全局环境的 this

前面提到 this 是 “指向调用时所在函数所绑定的对象”, 这句话拗口但绝对正确,没有一个多余的字。全局环境中有不同的宿主对象,浏览器环境中是 window, node 环境中是 global。这里重点说下浏览器环境中的 this。

 

浏览器环境中非函数内 this 指向 window

1

alert(window=== this) // true

因此你会看很很多开源 JS lib 这么写

1

2

3

4

(function() {

    // ...

     

})(this);

或这样写

1

2

3

4

(function() {

    // ...

   

}).call(this);

比如 underscore 和 requirejs,大意是把全局变量 window 传入匿名函数内缓存起来,避免直接访问。至于为啥要缓存,这跟 JS 作用域链有关系,读取越外层的标识符性能会越差。请自行查阅相关知识,再说就扯远了。

 

浏览器中比较坑人,非函数内直接使用 var 声明的变量默认为全局变量,且默认挂在 window 上作为属性。

1

2

3

4

var andy = '刘德华'

alert(andy === window.andy) // true

alert(andy === this.andy) // true

alert(window.andy === this.andy) // true

 

因为这个特性,有些笔试题如

1

2

3

4

5

6

7

8

9

10

11

12

13

var x = 10;

function func() {

    alert(this.x)

}

var obj = {

    x: 20,

    fn: function() {

        alert(this.x)

    }

}

var fn = obj.fn

func() // 10

fn() // 10

没错,最终输出的都是全局的 10。永远记住这一点:判断 this 指向谁,看执行时而非定义时,只要函数(function)没有绑定在对象上调用,它的 this 就是 window。

 

5. this 和 DOM/事件

W3C 把 DOM 实现成了各种节点,节点嵌套一起形成 DOM tree。节点有不同类型,如文本节点,元素节点等10多种。元素节点又分成了很多,对写HTML的人来说便是很熟悉的标签(Tag),如 div,ul,label 等。 看 W3C 的 API 文档,会发现它完全是按照面向对象方式实现的各种 API,有 interface,extends 等。如

看到了吧,这是用 Java 写的,既然是用面向对象方式实现的API,一定有类/对象(废话^_^),有 类/对象,则一定有 this (别忘了这篇文章的中心主题)。所有的 HTML tag 类命名如 HTMLXXXElement,如

前面说过 this 是指向当前类的实例对象,对于这些 tag 类来说,不看其源码也知它们的很多方法内部用到的 this 是指向自己的。 有了这个结论,写 HTML 和 JS 时, this 就清晰了很多。

 

示例A

1

2

<!-- this 指向 div -->

<div onclick="alert(this)"></div>

  

示例B

1

2

3

4

5

6

<div id="nav"></div>

<script>

    nav.onclick = function() {

        alert(this) // 指向div#nav

    }

</script>

 

示例C

1

2

3

$('#nav').on('click', function() {

    alert(this) // 指向 nav

})

 

以上三个示例可以看到,在给元素节点添加事件的时候,其响应函数(handler)执行时的 this 都指向 Element 节点自身。jQuery 也保持了和标准一致,但却让人迷惑,按 “this 指向调用时所在函数所绑定的对象” 这个定义,jQuery 事件 handler 里的 this,应该指向 jQuery 对象,而非 DOM 节点。因此你会发现在用 jQuery 时,经常需要把事件 handler 里的 element 在用 $ 包裹下变成 jQuery 对象后再去操作。比如

1

2

3

4

5

$('#nav').on('click', function() {

    var $el = $(this) // 再次转为 jQuery 对象,如果 this 直接为 jQuery 对象更好

    $el.attr('data-x', x)

    $el.attr('data-x', x)

})

 

有人可能有如下的疑问

1

2

3

4

5

6

<div id="nav" onclick="getId()">ddd</div>

<script>

    function getId() {

        alert(this.id)

    }

</script>

点击 div 后,为什么 id 是 undefined,不说是指向的 当前元素 div 吗? 如果记住了前面提到的一句话,就很清楚为啥是 undefined,把这句话再贴出来。

判断 this 指向谁,看执行时而非定义时,只要函数(function)没有绑定在对象上调用,它的 this 就是 window

这里函数 getId 调用时没有绑定在任何对象上,可以理解成这种结构

1

2

3

div.onclick = function() {

    getId()

}

getId 所处匿名函数里的 this 是 div,但 getId 自身内的 this 则不是了。 当然 ES5 严格模式下还是有个坑。

 

6. this 可以被 call/apply 改变

call/apply 是函数调用的另外两种方式,两者的第一个参数都可以改变函数的上下文 this。call/apply 是 JS 里动态语言特性的表征。动态语言通俗的定义

程序在运行时可以改变其结构,新的函数可以被引进,已有的函数可以被删除,即程序在运行时可以发生结构上的变化

 

通常有以下几点特征表示它为动态语言

  1. 动态的数据类型
  2. 动态的函数执行
  3. 动态的方法重写

动态语言多从世界第二门语言 LISP 发展而来,如死去的 SmallTalk/VB,目前还活着的 Perl/Python, 以及还流行的 Ruby/JavaScript。JS 里动态数据类型的体现便是弱类型,执行的时候才去分析标识符的类型。函数动态执行体现为 eval,call/aply。动态方法重写则体现在 JS 原型可重写。不扯远,这里重点说下 call/apply 对 this 的影响。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var m1 = {

    message: 'This is A'

} 

var m2 = {

    message: 'This is B'

}  

 

function showMsg() {

    alert(this.message)

}

 

showMsg() // undefined

showMsg.call(m1) // 'This is A'

showMsg.call(m2) // 'This is B'

可以看到单独调用 showMsg 返回的是 undefined,只有将它绑定到具有 message 属性的对象上执行时才有意义。发挥想象力延伸下,如果把一些通用函数写好,可以任意绑定在多个类的原型上,这样动态的给类添加了一些方法,还节省了代码。这是一种强大的功能,也是动态语言的强表现力的体现。

经常会听到转向 Ruby 或 Python 的人提到“编程的乐趣”,这种乐趣是源自动态语言更接近人的思维(而不是机器思维),更符合业务流程而不是项目实现流程。同样一个功能,动态语言可以用更小的代码量来实现。动态语言对程序员生产力的提高,是其大行其道的主要原因。

性能方面,动态语言没有太大的优势,但动态语言的理念是:优化人的时间而不是机器的时间。提高开发者的生产力,宁肯牺牲部分的程序性能或者购买更高配置的硬件。随着 IT 业的不断发展和摩尔定律的作用,硬件相对于人件一直在贬值,这个理念便有了合理的现实基础。

 

JS 里的 call/apply 在任何一个流行的 lib 里都会用到,但几乎就是两个作用

  1. 配合写类工具实现OOP,如 mootools, ClassJS, class.js,
  2. 修复DOM事件里的 this,如 jQuery, events.js

 

关于 call 和 apply 复用:利用apply和arguments复用方法

关于 call 和 apply 的性能问题参考: 冗余换性能-从Backbone的triggerEvents说开了去

 

7. me/self/that/_this 暂存 this

如果采用 OOP 方式写 JS 代码,无可避免的会用到 this,方法内会访问类的内部属性(字段),也可能会调用类的另一个方法。当类的方法内又有一个 function 时,比如浏览器端开发经常遇见的给 DOM 元素添加事件,这时如果事件处理器(handler)中的想调用类的一个方法,此时 handler 内的 this 是 dom 元素而非类的当前对象。这个时候,需要把 this 暂存,开发者发挥着自己的聪明才智留下了几种经典的命名 me, self, that, _this。如

 

又如这是我曾经采用 OOP 方式写过的一段代码

一般会在每个方法的第一句就把 this 暂存下来。

 

 

8. ES5 中新增的 bind 和 this

上面 6 里提到 call/apply 在 JS 里体现动态语言特性及动态语言的流行原因,其在 JS 用途如此广泛。ES5发布时将其采纳,提了一个更高级的方法 bind。

1

2

3

4

5

6

7

8

9

10

var modal = {

    message: 'This is A'

}

 

function showMsg() {

    alert(this.message)

}

 

var otherShowMsg = showMsg.bind(modal)

otherShowMsg() // 'This is A'

因为是 ES5 才加的,低版本的IE不支持,可以修复下Function.prototype。bind 只是 call/apply 的高级版,其它没什么特殊的。

 

9. ES6 箭头函数(arrow function) 和 this

ES6 在今年的 6月18日 正式发布(恰京东店庆日同一天,^_^),它带来的另一种类型的函数 - 箭头函数。箭头函数的一个重要特征就是颠覆了上面的一句话,再贴一次

判断 this 指向谁,看执行时而非定义时,只要函数(function)没有绑定在对象上调用,它的 this 就是 window

 

是的,前面一直用这句话来判断 this 的指向,在箭头函数里前面半句就失效了。箭头函数的特征就是,定义在哪,this 就指向那。即箭头函数定义在一个对象里,那箭头函数里的 this 就指向该对象。如下

1

2

3

4

5

6

7

8

9

var book = {

    author: 'John Resig',

    init:  function() {

        document.onclick = ev => {

            alert(this.author) ; // 这里的 this 不是 document 了

        }

    }

};

book.init()

对象 book 里有一个属性 author, 有一个 init 方法, 给 document 添加了一个点击事件,如果是传统的函数,我们知道 this 指向应该是 document,但箭头函数会指向当前对象 book。

箭头函数让 JS 回归自然和简单,函数定义在哪它 this 就指向哪,定义在对象里它指向该对象,定义在类的原型上,就指向该类的实例,望文知意这样更容易理解。

 

总结: 

函数的上下文 this 是 JS 里不太好理解的,在于 JS 函数自身有多种用途。目的是实现各种语言范型(面向对象,函数式,动态)。this 本质是和面向对象联系的,和写类,对象关联一起的, 和“函数式”没有关系的。如果你采用过程式函数式开发,完全不会用到一个 this。 但在浏览器端开发时却无可避免的会用到 this,这是因为浏览器对象模型(DOM)本身采用面向对象方式开发,Tag 实现为一个个的类,类的方法自然会引用类的其它方法,引用方式必然是用 this。当你给DOM对象添加事件时,回调函数里引用该对象就只能用 this 了。

转:https://www.cnblogs.com/snandy/p/4773184.html

 

AI大模型应用性能核心指标:TTFT 与 TPOT 详解 这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。 阅读详情

相关推荐

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1217

关于js类中函数是否加this

说实话,js之前没有系统学过,基础还是很薄弱。。。今天看到了一段代码,有些难以理解,抽象出来是这样的 class A{ constructor(){ this.name="tom"; this.age=19; } getAge() { console.log('age is '+this.age); } f() { this.getAge();

weixin_43098069的博客 1186

深入LSM6DSL的FIFO连续模式:基于STM32和MEMS库的数据流高效处理指南

本文深入探讨了LSM6DSL的FIFO连续模式,结合STM32硬件平台和ST官方MEMS库,提供了高效的数据流处理方案。通过优化I2C通信时序、中断驱动设计以及动态ODR调整,实现低功耗数据采集与处理,显著提升嵌入式传感器应用的性能和续航能力。

weixin_30387799的博客 348

浅说一下JavaScript中Class类的this指向问题

浅说一下JavaScript中Class类的this指向问题

徐飞的博客 2774

《UVM实战》学习笔记——第三章UVM基础

uvm基础,常见的派生类,config db机制,打印信息等

qq_42135020的博客 5176

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9405

JavaScript-类方法中this指向问题

this关键字 与其他语言相比,函数的this关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。它是当前执行上下文(global、function 或 eval)的一个属性,在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。 全局上下文 无论是否在严格模式下,在全局执行环境中(在任何函数体外部)this都指向全局对象。 Note:你可以使用globalThis 获取全局对象,无论你的代码是否在当前上下文运行。 ...

CamphorBlossom的博客 1416

CTR-GCN 论文解读

提出了一种信道拓扑优化图卷积,该卷积可以动态有效地对信道拓扑进行建模。共享拓扑是一个参数化的邻接矩阵,作为所有通道的拓扑先验,并提供顶点之间的一般相关性。通过使用特定于通道的相关性细化共享拓扑,CTR-GC 获得了通道拓扑。

一杯水果茶!足矣~ 3088

在Ubuntu 20.04上,如何让ROS Noetic和Anaconda虚拟环境里的PyTorch和平共处?

本文详细解析了在Ubuntu 20.04上如何解决ROS Noetic与Anaconda虚拟环境中PyTorch的冲突问题,提供了三种实用解决方案:修改Python解释器声明、系统级环境变量配置和catkin工具链深度整合。这些方法帮助开发者实现机器人学习项目中的环境无缝协作,提升开发效率。

weixin_30765577的博客 779

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 760

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

【从零开始学习 SystemVerilog】1.1、SystemVerilog 概述

努力,加油每一天鸭~ 1037

【JS】Javascript中的this到底是什么

JavaScript中的this是一个对于新手来说特别吓人并且不友好的概念。对于一个前端萌新来说,这个概念既模糊,又看不到它存在的意义。本文将解析JavaScript中的this,并且逐一分析他在每个常见场景中的意义和指向。

a1611107035的博客 3273

60、磁悬浮主动隔振系统的LQR控制研究

本研究针对磁悬浮主动隔振系统,提出了一种结合ANN建模、LQR控制与MPGA优化的综合控制方案。通过建立系统的动力学与状态空间模型,利用混合训练算法的ANN精确描述MSVI的非线性和滞后特性,并设计基于最小力传递率的LQR控制器。为优化LQR的Q和R矩阵,引入多群体遗传算法(MPGA),有效克服传统GA的早熟收敛问题,提升搜索效率与控制性能。仿真结果表明,在单频、扫频、随机及冲击激励下,该方法显著降低传递力幅值,隔振效果远优于被动系统。研究验证了所提方法的有效性,为磁悬浮隔振技术的实际应用奠定了基础,并展望

linux6sysadmin的博客 125

JS中的this详解

JS中的this 背景 JS中的this指向问题,一直以来自己并不是十分的清楚,平时在开发中使用时到是也能正常应用,但是对其使用和判断并不能信手拈来,所以自己搜索了一些资料,总结了一下,也希望对大家有所帮助。 目录 什么是this? this的指向 为什么要使用this? 什么的this? this,从字面上含义是“这个”, 所以在JS中this表示的就是当前对象,但这个“当前对象”到底指的是哪个对象,是由运行时所在的上下文环境决定的。 简言之:当前是谁调用了我,我就指向谁; this:表示当前对象。

weixin_42321292的博客 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

一文看懂javascript(js)的this和Vue中的this

this是Javascript语言中的一个关键字,它代表函数运行时自动生成的一个内部对象,指当前对象,因此this只能在函数内部使用。随着函数执行环境的改变,this所指代的对象也会发生改变,但this始终指向的是调用函数的对象。简单来说就是谁调用了这个函数,this就指向谁(对象)。方法区别call既可以调用函数又可以传参数,参数只需用逗号隔开apply既可以调用函数又可以传参数,参数需要用一个数组进行包裹bind。

2301_76179969的博客 1733

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【JavaScript】聊聊js中关于this的指向

合集 - JavaScript(5)1.【JavaScript】聊聊js中关于this的指向07-032.【workerman】uniapp+thinkPHP5使用GatewayWorker实现实时通讯07-053.【JavaScript】聊一聊js中的浅拷贝与深拷贝与手写实现07-134.【JavaScript】前端算法题(重建二叉树、反向输出链表每个节点)07-305.【JavaScript】...

weixin_36338813的博客 502

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

你不知道的javascript

最近笔者使用node.js完成了一个小型项目,在javascript的泥坑里面摸爬滚打了一番,感触颇深。Javascript会给习惯于传统面向对象模式的开发人员,带来很多意想不到的障碍。这些问题基本上是因为误解了javascript的设计导致的。 如果有本书能把js的这些槽点、另类之处,一次性说个明白就好了。还真是有,图灵就出版了一本《你不知道的javascript》。 图灵出版的这本《你不知道的javascript》三卷。 https://pan.baidu.com/s/1K2dW_syvf5LFDJYF

weixin_35597398的博客 5316

javascript你不知道的This

《你不知道的javascript》这本书读了有好几遍了,似乎每一次读都有新发现,有些内容并不是一下子可以弄懂的,每次读似乎都能明白一些概念。再重读一下this关键字。这个概念非常灵活,也非常难掌握,所以我觉得经常读读没有坏处。期待javascript一桶江湖,这样学习的成本就低啦!参考本书的第二部分的第一章,第二章。 this关键字是js中最最复杂的机制之一。他被自动定义到所有函数...

diaozhu1028的博客 176

【JS】JavaScript 中 this 关键字

this 是一个关键字,能够在函数执行过程中访问运行环境,它的值根据函数的调用方式和上下文而变化,所以 this 是动态的,动态指向当前函数的运行环境。this 是一个指针型变量,在 JavaScript 中没有指针的概念,但是this真实地指向当前调用对象,能够在函数内部访问和操作当前对象的属性和方法。

Eliaukoyx 1297

JavaScript初学必备 之 this指向

JS新手this关键字学习

tic_tac_toe的博客 1573

或许我们在 JavaScript 中不需要 this 和 class

今年年初 Douglas Crockford 的新书 How JavaScript Works 出版不久后,我买来看了。在 JavaScript: The Good Parts 出版后 10 年,并深远影响了 JavaScript 语言之后,Douglas Crockford 对 JavaScript 这门语言依然有很多不满,并认为 the bad parts 更多了。 当然我并不认同他的所有观点...

weixin_33890499的博客 435

深入辨析JavaScript的this指向

outerFunc是在运行时才能确定this指向,那么innerFunc如何在定义时就能确定this的值呢?// this 继承自 outerFunc 的 this// 输出: Window {...}(非严格模式)或 undefined(严格模式)事实是:innerFunc的this静态绑定了 outerFunc的this 的引用!在onterFunc定义时,innerFunc的this并不是一个独立的值,而是直接指向 onterFunc的this。

weixin_58843362的博客 2019

一文知根:JS中this到底指的谁?

this也是上下文的一种,在一个执行上下文栈帧中,函数执行上下文 = 环境记录 + outer + this的绑定 共同组成。this的指向比较复杂,且同样重要。

gzzeason的博客 765

JavaScript中的this, 究竟指向什么?

文章深入探讨了 JavaScript 中 this 的指向问题,涵盖了多种场景,如全局上下文、模块上下文、普通函数上下文、构造函数上下文、对象或实例属性的函数上下文、类的相关上下文、继承场景、call/apply/bind 方法、原始值原型函数属性上下文、回调函数上下文、箭头函数、eval 函数、事件处理器等,并对严格模式下 this 的处理做了总结,还讨论了特殊或组合场景。

Coding home - 漂流瓶jz 1128

JavaScript函数中this的指向

this指向问题

weixin_44715186的博客 1031
下一篇: Xdebug文档(一)基本特性
妄想编程
博客等级 码龄8年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值