首页
学习
活动
专区
圈层
工具
发布

JavaScript中的this指向问题

JavaScript中的this关键字 在JavaScript中,关键字 this 是一个特殊的对象,它在函数被调用时自动创建。通常用来指向当前执行的函数所属的对象。...通过这个过程,我们可以看到,当使用new关键字调用构造函数时,JavaScript会自动将构造函数中的this绑定到新创建的实例上。...实际应用中,常见的this指向问题 在嵌套函数中丢失this:当在一个函数内部定义另一个函数,并在内部函数中使用this时,this的指向会发生变化。...可以使用箭头函数或通过在外部函数中将this赋值给一个变量来解决这一问题。 事件处理函数中的this:在事件处理函数中,this通常指向触发事件的元素。...可以使用bind()方法或箭头函数来解决这一问题。 this使用时建议遵循以下几点: 确定函数调用的方式,了解this的默认绑定规则。

1.1K60

JavaScript中的this指向问题

1、什么是this this一般指向的是调用它的对象,比如调用它的上下文是window对象,那就是指向window对象,如果调用它的上下文是某对象就是指向某对象…… //例如 console.log...2、用来干嘛 this在一般情况下,是指向函数的上下文,可以处理一些作用域下的事件调用 如果想要引用某对象的方法,就不用写太多重复代码,直接用this调用某对象的方法 3、怎么在代码中使用 console.log...都可以改变函数执行的上下文 注:改变上下文可以为程序节省内存空间,减少不必要的内存操作 通俗易懂解释改变上下文: 小张在公司有个快递要拿,刚好有事,自己拿不了,他就安排小王拿,这里小张本来是拿快递的执行上下文...,因为有事,就改变拿快递的执行上下文,变成了小王,节约了小张的时间,他就不用另外安排时间去拿快递了 不同点 call、apply是立即执行,bind是不会立即执行,而是返回一个回调函数,执行时需要加个...,可以把参数通过数组形式的进行传递 ?

1.5K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript运算符以及JavaScript存在的问题

    JavaScript运算符以及JavaScript存在的问题 运算符 描述 + 用于数值类型的时候,是加法;用于字符串和其它数据类型(包括字符串)的时候,将字符串和其它数据类型连接起来 - 减法 * 乘法...JavaScript是动态,弱类型语言 JavaScript毫无疑问是动态语言,当你定义变量的时候,并没有声明变量的数据类型;另外值得关注的一点是JavaScript还是弱类型的语言,例如: var str...JavaScript是前端的必需品,它是浏览器中运行的唯一语言。每一位前端开发者都需要使用它。但是JavaScript存在上面的问题,现在的方法是进行转译。...TypeScript不是一种全新的语言,而是JavaScript的超集。TypeScript编译器可以将TypeScript代码编译为有效的JavaScript。...例如今天我们能看到的各种各样的非原生应用取代原生应用。 对于写过多种语言的我而言,只是希望能够有一个较好的JavaScript替代品。解决JavaScript出现的问题。

    75930

    关于JavaScript性能问题的误解

    因为 JavaScript 是单线程的,所以只能从上到下一行一行去执行代码,如果遇到大的数据量计算就会比较耗时,也就是我们大部分人理解的性能有问题。...写这篇文章的缘由写这篇文章的缘由是因为公司的一个前端同事,抱怨为了实现产品想要的特殊效果,只能前端去遍历处理数据,而后端接口又没有分页,担心数据量太大了这样遍历会不会有性能问题。...这里的设计确实会出现性能问题,列表类接口如果不分页,数据量一大后端查库的io开销和返回给前端数据的网络传输一定会耗时增加,页面上渲染大量数据时也有可能造成卡顿。...JavaScript 中计算代码执行耗时的方法测试 JavaScript 代码执行时间主要有3种方法,最容易想到的应该就是直接获取前后的时间戳相减。...3、performance.nowperformance.now 是一个用于获取高精度时间戳的 JavaScript API,返回包括小数点的毫秒时间。

    44510

    JavaScript 进阶问题列表

    我在我的 Instagram 上每天都会发布 JavaScript 的问题,并且同时也会在这个仓库中发布。...从基础到进阶,测试你有多了解 JavaScript,刷新你的知识,或者帮助你的 coding 面试! ? ?我每周都会在这个仓库下更新新的问题。 答案在问题的下方。祝你好运 ❤️: 1....这就是为什么你可以使用内置的 JavaScript 方法!所有这些方法在原型上都是可用的。...由于类型的强制转换,7 + '5'的结果是"75". JavaScript将7转换成了字符串,可以参考问题15.我们可以用+号把两个字符串连接起来。"...当我们对参数进行值传递时,会创建一份该值的 复制 。(可以参考问题46) 变量birthYear有一个对"1997"的引用,而传入的参数也有一个对"1997"的引用,但二者的引用并不相同。

    1.8K10

    javascript闭包问题

    有权访问另一个函数作用域内变量的函数就是闭包。...并没有,在这里,var c = a(); 这段代码意思是将 a 方法的返回值赋值给变量 c ,那么 a() 的返回值就是 inc ,也就 function inc() , 后面执行两次 c(); c()...简单来说:单纯的一句 var f = function() { alert('lalala'); }; 是不会弹窗的,后面接一句 f(); 才会执行方法内部的代码,才会弹窗。...result,所以funcs[i]() 执行的是 result[i] 的方法:return i 13 } 因为正在引用 i ,并且 i 的值已经是10,也就是 return i  的值一直是return...这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样。

    58820

    探寻 JavaScript 精度问题

    阅读完本文可以了解到 0.1 + 0.2 为什么等于 0.30000000000000004 以及 JavaScript 中最大安全数是如何来的。...推导 0.1 + 0.2 为何等于 0.30000000000000004 在 JavaScript 中所有数值都以 IEEE-754 标准的 64 bit 双精度浮点数进行存储的。...1 需要进位; 推荐阅读 JavaScript 浮点数陷阱及解法,阅读完该文后可以了解到以下公式的由来。...JavaScript 的最大安全数是如何来的 根据双精度浮点数的构成,精度位数是 53 bit。安全数的意思是在 -2^53 ~ 2^53 内的整数(不包括边界)与唯一的双精度浮点数互相对应。...相关链接 代码之谜系列 IEEE-754 进制转换图生成 JavaScript 浮点数陷阱及解法: 推荐阅读 javascript 里最大的安全的整数为什么是2的53次方减一

    1.3K20

    深入理解JavaScript的this指向问题

    Javascript的this用法 this是Javascript语言的一个关键字。 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。...比如: function test(){     this.x = 1;   } 随着函数使用场合的不同,this的值会发生变化。...但是有一个总的原则,那就是this指的是调用函数的那个对象。 下面分四种情况,详细讨论this的用法。...情况一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。 请看下面这段代码,它的运行结果是1。...情况四 apply调用 apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

    57320

    JavaScript递归中的作用域问题

    需求是这样的,从子节点寻找指定className的父节点,一开始就想到递归(笨!)...本来是一最基本的递归,为什么会出现这种结果? 其实修改这个问题很简单,目前我只想到一个办法:将result声明为全局变量!...可能有朋友看到这里就已经知道这个问题的原因了,那就是:JavaScript中function的作用域问题-闭包!下面详细解释一下。...如果按照上面的写法, 1、每次递归调用getParent()方法是都会声明一个局部变量result,同时因为闭包的缘故,每次的gerParent()的运行作用域又保留着上次getParent()的作用域...这个问题同样引出了以前遇到的关于return的bug,当时把return想象的太强大了,以为return会跳出整条作用域链,上述问题证明了return只能跳出当前作用域,以后注意!

    1.3K80

    JavaScript中科学计数法的问题

    JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。...值是对的,只是用了科学计数法,也是数值类型。但是问题来了,一般用户用户看不懂 2.2e-7,那么就把它转换成 0.00000022 吧。...然而问题了,我用尽办法,怎么样都无法将 2.2e-7 转换成直观的 0.00000022。或许你会嘲笑我,告诉我直接用 .toFixed() 方法。...但是新问题又来了, .toFixed() 会保留足够的小数位,比如:2e-7.toFixed(8) 得到的值是 0.00000020,2e2.toFixed(8)得到的值是 200.00000000。...最后的 0 让我感到多余… 问题分析 问题还是要解决,只能深入了解 JavaScript 中科学计数法相关的知识。对于极大或者极小的数,可以用科学计数法 e来表示的浮点数值来表示。

    13.1K61
    领券