首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Javascript中是否相当于.apply不会改变这个值?

在JavaScript中,相当于.apply不会改变这个值的方法是.bind()。

.bind()方法创建一个新的函数,该函数在调用时会将指定的this值绑定到函数体内,并在调用时传入预设的参数。它不会立即执行函数,而是返回一个新函数,可以稍后调用。

.bind()方法的语法如下:

function.bind(thisArg[, arg1[, arg2, ...]])

其中,thisArg参数是在函数执行时绑定到this的值,arg1, arg2等参数是预设的参数。

.bind()方法的优势是可以在函数调用时指定this的值,而不是在定义函数时确定。这样可以更灵活地控制函数的上下文。

应用场景:

  1. 在事件处理函数中,绑定特定的上下文,确保函数内部的this指向正确。
  2. 创建一个新函数,预设一些参数,以便稍后调用。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云函数(云函数):https://cloud.tencent.com/product/scf

腾讯云函数是一种事件驱动的无服务器计算服务,可以帮助开发者在云端运行代码,无需关心服务器的管理和运维。通过使用腾讯云函数,可以方便地创建和管理函数,并将其与其他腾讯云服务集成,实现更强大的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【优雅代码】深入浅出 妙用Javascriptapply、call、bind

apply、call  javascript ,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。...(array1, array2); /* array1 为 [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */ 获取数组的最大和最小...直接来看看具体如何使用,常见的单体模式,通常我们会使用 _this , that , self 等保存 this ,这样我们可以改变了上下文之后继续引用到它。 ...答案是,两次都仍将输出 3 ,而非期待的 4 和 5 。原因是,Javascript,多次 bind() 是无效的。...更深层次的原因, bind() 的实现,相当于使用函数在内部包了一个 call / apply ,第二次 bind() 相当于再包住第一次 bind() ,故第二次以后的 bind 是无法生效的。

40320

一文读懂Js的this指向

这个真正调用的时候,运行环境已经不是obj了,而是全局环境,所以this不再指向obj。可以这样理解,JavaScript 引擎内部,obj和obj.foo储存在两个内存地址,称为地址一和地址二。...注意:如果是严格模式或者vue(vue默认严格模式),传入null则指向null,传入window则指向window如果call方法的参数是一个原始,那么这个原始会自动转成对应的包装对象,然后传入...Object原型上的方法,而是obj创建了与原型一样的方法,执行的时候优先调用自身的方法),就不会得到正确结果。...手动实现实现思路:改变this指向:可以将目标函数作为这个对象的属性利用arguments类数组对象实现参数不定长不能增加对象的属性,所以结尾需要delete以下是手动实现方式:/***@desc 描述...原函数的参数,call方法必须一个个添加,但是apply方法,必须以数组形式添加。

89900

一文读懂Js的this指向_2023-03-15

这个真正调用的时候,运行环境已经不是obj了,而是全局环境,所以this不再指向obj。可以这样理解,JavaScript 引擎内部,obj和obj.foo储存在两个内存地址,称为地址一和地址二。...注意:如果是严格模式或者vue(vue默认严格模式),传入null则指向null,传入window则指向window如果call方法的参数是一个原始,那么这个原始会自动转成对应的包装对象,然后传入...Object原型上的方法,而是obj创建了与原型一样的方法,执行的时候优先调用自身的方法),就不会得到正确结果。...手动实现实现思路:改变this指向:可以将目标函数作为这个对象的属性利用arguments类数组对象实现参数不定长不能增加对象的属性,所以结尾需要delete以下是手动实现方式:/***@desc 描述...原函数的参数,call方法必须一个个添加,但是apply方法,必须以数组形式添加。

50320

一文带你了解call、apply、bind的区别及源码实现

前言 call、apply和bind都是JavaScriptFunction对象的原型方法,它们的作用主要是改变函数的执行上下文(即this的)以及传递参数。...eval函数执行上下文 执行在eval函数的代码会有属于他自己的执行上下文,不过eval函数不常使用, JavaScript,eval()函数用于执行一个字符串表达式,并返回表达式的。...这个函数的 this 指向除了使用 new 时会被改变,其他情况下都不会改变。...call、apply、bind的区别 JavaScript,call()、apply()和bind()都是用于改变函数执行上下文的方法。它们的主要区别在于传递参数的方式和返回。...作用:创建一个新的函数,并将原函数内部的this设置为指定的,同时将一系列参数绑定到新函数上。新函数可以单独调用,但不会改变原函数的执行上下文。 返回:返回一个新函数。

25310

56 道高频 JavaScript 与 ES6+ 的面试题及答案

情况四:apply 调用 apply() 是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this 指的就是这第一个参数。...所有字母出现的次数,判断对象是否存在数组,如果存在 +1,不存在赋值为 1 for(var i = 0; i < newArr.length; i++){ // 类似:json :...其次,nAdd 的是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以 nAdd 相当于是一个 setter,可以函数外部对函数内部的局部变量进行操作。...解决方法是,退出函数之前,将不使用的局部变量全部删除。 闭包会在父函数外部,改变父函数内部变量的。...,一个是 arr,一个是 i //尽管引用 i 的随外部改变 ,但本地私有变量(形参) arg 不会受影响,其一开始被调用的时候就决定了 for (var i = 0; i < arr.length

88240

56 道高频 JavaScript 与 ES6+ 的面试题及答案

情况四:apply 调用 apply() 是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this 指的就是这第一个参数。...所有字母出现的次数,判断对象是否存在数组,如果存在 +1,不存在赋值为 1 for(var i = 0; i < newArr.length; i++){ // 类似:json :...其次,nAdd 的是一个匿名函数(anonymous function),而这个匿名函数本身也是一个闭包,所以 nAdd 相当于是一个 setter,可以函数外部对函数内部的局部变量进行操作。...解决方法是,退出函数之前,将不使用的局部变量全部删除。 闭包会在父函数外部,改变父函数内部变量的。...,一个是 arr,一个是 i //尽管引用 i 的随外部改变 ,但本地私有变量(形参) arg 不会受影响,其一开始被调用的时候就决定了 for (var i = 0; i < arr.length

1.1K10

JavaScript 高级应用(第二弹)

文章目录 一、Fuction 1.1 call 一、改变上下文 二、实现一个 call 函数 1.2 apply 一、 场景 二、实现一个 apply 函数 1.3 bind 一、基本使用 1.4...* 对象.函数() this 指向这个对象 * @param {*} fn 接收的函数,实际上为回调函数 * @param {*} obj 改变 this 为 obj * @param {......从名称上来看,它在 JavaScript 叫做 “回调函数”?那么什 么又是“回调函数” 呢?“回调函数” 又要怎么触发呢?它有返回吗?...不绕圈子了,不然就进入回调陷阱了 一、来看一个生活的例子 我们先来看一个生活 回调函数的一个例子(我在学习 callback,知乎翻到的) 这里面出现了几个概念,我的理解如下 你给店员,留下电话号码...这不就告诉了我们这个是怎么用的嘛 翻译过来,简单的说 forEach 函数,会接收三个参数,并且会 告诉 callbackfn 对数组的每一个元素执行一次回调操作 所以这个 forEach 的案例告诉了我们什么

61720

面了十多家,总结出20道JavaScript 必考的面试题!

因此,使用 for...in 循环时,可以使用 hasOwnProperty() 方法来判断一个属性是否为对象自身的属性 for…of: 用来遍历一个可迭代对象(iterable object)的元素...this指向window 定时器this指向window 构造函数,this指向当前创建的对象 方法,this指向调用者 如何改变this的指向 call、apply、bind 作用是改变函数执行时的上下文...,简而言之就是改变函数运行时的this指向 apply() 的第一个参数是this的指向,非严格模式下,第一个参数为null或者undefined时会自动替换为指向全局对象,apply()的第二个参数为数组或类数组...bind() 的作用与call()和apply()一样,都是可以改变函数运行时上下文,区别是call()和apply()调用函数之后会立即执行,而bind()方法调用并改变函数运行时上下文后,返回一个新的函数...如果子类没有constructor,则默认添加一个,并且constrcutor调用super函数,相当于调用父类的构造函数 new 关键字做了什么?

18530

javascript函数的call、apply和bind的原理及作用详解

javascript函数的 call、apply和bind 本质是用来实现继承的,专业点说法就是改变函数体内部 this 的指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能的对象里借用过来。...请注意,this 可能不是该方法看到的实际:如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动替换为指向全局对象,原始会被包装。..., bind 被调用时,这个新函数的 this 被指定为 bind 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。...实际应用场景 应用场景一:从数组找出最大、最小 原生的 Math.max、Math.min 只能传入用逗号分隔的参数列表,但实际业务我们往往拿到的是数组,就可以用下面的方法来实现(也可以用扩展运算符...)// slice 省略参数时就是截取出所有元素,此处相当于 Array.prototype.slice.apply(fakeArray, 0, fakeArray.length) 参考文档(MDN)

20720

jsthis指向问题及call,apply,bind的区别

ECMAScript 6 又新增了 new.target (检测这个函数是否使用了new关键字,如使用则将引用被调用的构造函数,否则为undefined)属性。...1.2.1 标准函数的this指向# 标准函数,this 指向的是把函数当成方法调用的上下文对象。也就是说在哪里调用的这个函数,那这个this只会指向它外面最靠近它的对象。...也就是说哪里定义了箭头函数,那这个this就在哪里,不会因为在其他地方调用而改变this指向。...,而且后续无论在哪里调用都不会改变了。...,解析的时候也是跟call一样顺序对应; call、apply没有返回,而bind改变完this指向后会返回一个改变完this指向之后的原函数的拷贝 可以再次进行调用。

1.2K20

说说这个this啊

,obj.A作为参数传递给了函数B,其实函数A最终被调用的位置是fn(),此时的fn是没有函数修饰的,上述代码相当于 123456789101112 var a = 2;function A(){...显式绑定 硬绑定 js,可以通过一些方法来改变this的指向,《你不知道的js》里被称为硬绑定,这些方法有apply,call,bind。 apply 此方法会执行函数。...apply方法只能接受两个参数,一个是this指向的上下文对象,另一个是传递给函数的参数列表(可选),这个参数列表是以数组的形式。...,arg2,arg3…) bind 此方法不会执行函数,而是返回一个新的函数,这个新的函数被指定了 this 的上下文,后面的参数是执行函数需要传入的参数。...);//{a:2} 如果构造函数使用return语句但没有指定返回,或者返回一个原始类型的,那么这时将忽略返回,同时使用这个新对象作为调用结果 123456 function A(){ this.a

83990

This指向与改变This指向

This指向与改变This指向 This 的指向 ES5 ,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。...还是这句话:this 永远指向最后调用它的那个对象,因为最后调用 fn 的对象是 a,所以就算 a 没有 name 这个属性,也不会继续向上一个对象寻找 this.name,而是直接输出 undefined..._this = this 如果不使用 ES6,那么这种方式应该是最简单的不会出错的方式了,先将调用这个函数的对象保存在变量 _this ,然后函数中都使用这个 _this,这样 _this 就不会改变了... MDN 定义 apply 如下: apply() 方法调用一个函数, 其具有一个指定的this,以及作为一个数组(或类似数组的对象)提供的参数 语法: fun.apply(thisArg, [argsArray...所以我们可以看到, new 的过程,我们是使用 call 改变了 this 的指向

1.2K20

每天3分钟,重学ES6-ES12(十九)Proxy-Reflect

这是我参与「掘金日新计划 · 6 月更文挑战」的第32天,点击查看活动详情 每天3分钟,重学ES6-ES12文章汇总 监听对象的操作 我们先来看一个需求:有一个对象,我们希望监听这个对象的属性被设置或获取的过程...# Proxy基本使用 * ES6,新增了一个[Proxy类](url),这个类从名字就可以看出来,是用于帮助我们创建一个**代理**的: * 也就是说,如果我们希望`监听一个对象的相关操作...## Proxy的construct和apply 当然,我们还会看到捕捉器还有construct和apply,它们是应用于函数对象的: ```js function foo() { } const...它主要提供了很多操作JavaScript对象的方法,有点像Object操作对象的方法; 比如Reflect.getPrototypeOf(target)类似于 Object.getPrototypeOf...(类似于Object.keys(), 但不会受enumerable影响).

23520

JS高级——函数进阶

区别点: call和apply会调用函数,并且改变函数内部this指向 call和apply传递的参数不一样,call传递参数aru1.aru2..形式 apply必须是数组形式[arg] bind不会调用函数...,可以改变函数内部this指向 主要应用场景: call经常做继承 apply经常跟数组有关系,比如借助于数学对象实现数组最大最小 bind不调用函数,但是还想改变this指向,比如改变定时器内部的...禁用了ECMAScript的未来版本可能会定义的一些语法,为未来版本的JavaScript做好铺垫。...严格模式的变化 严格模式对JavaScript的语法和行为,都做了一些改变。 变量规定 正常模式,如果一个变量没有声明就赋值,默认是全局变量。...,新版本的JavaScript会引入“块级作用域”(ES6已引入),为了与新版本接轨,不允许非函数的代码块内声明函数。

1.8K20

前端面试之JavaScript

JavaScript JS的8种数据类型及区别 包括类型(基本对象类型)和引用类型(复杂对象类型) 基本类型(类型): Number(数字),String(字符串),Boolean(布尔),Symbol...; 还可以继承关系中用来判断一个实例是否属于它的父类型。...(操作自己的私有变量和外界没有关系); (2)保存:如果当前上下文不被释放【只要上下文中的某个东西被外部占用即可】,则存储的这些私有变量也不会被释放,可以供其下级上下文中调取使用,相当于把一些保存起来了...这个函数的 this指向除了使用new `时会被改变,其他情况下都不会改变。若为空默认是指向全局对象window。...让函数的this指向这个对象,执行构造函数的代码(为这个新对象添加属性) 判断函数的返回类型,如果是类型,返回创建的对象。如果是引用类型,就返回这个引用类型的对象。

76020

详解JavaScript的this

平时的代码,相信大家经常用到 this,可是你真的明白此 this 真的是你认为的 this 吗?...还有一种情况,《深入理解 ES6》一书中写道: 如果箭头函数被非箭头函数包含,则 this 绑定的是最近一层非箭头函数的 this,且不能通过 call()、apply() 或 bind() 方法来改变...使用 apply 方法可以改变 this 的指向。如果这个函数处于非严格模式下,则指定为 null 或 undefined 时会自动指向全局对象(浏览器中就是window对象)。...箭头函数没有 this 绑定,必须通过查找作用域链来决定其。...---- 往期精选文章 一小时内搭建一个全栈Web应用框架 全栈工程师技能大全 一个治愈JavaScript疲劳的学习计划 推翻JavaScript的三座大山:作用域篇 掌握Chrome开发工具:新一代前端开发技术

92150

JS-我待this如初见

全局和调用普通函数 构造函数 函数作为对象的一个属性 函数用call或apply或bind 事件监听函数的this 情况1:全局 & 调用普通函数 全局环境下,this永远是window,这个应该没有非议...window,相当于全局了,this.home的为中国 3.闭包中使用this对象(对象方法函数又有一个匿名函数)-this用处(诡异) ES3,此时使用this比较糟糕,因为this失去了方向...,this将永远是对window对象的引用(再次说明,thisES5是固定的) 如何改变上述情况呢?.../apply(作用域,传递给函数的参数) 它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。...创建了objectSaycolor()函数,objectSaycolor()函数的this的等于o,因此,即使是全局作用域中调用这个函数也会看到“blue”。

69720

JavaScript 严格模式

这是因为 {} 相当于一个作用域,上面相当于一个作用域中使用严格模式,作用域外面的代码是不受约束的。因此可以看出,严格模式只对它所在的作用域中的代码有效(而且是它下方的代码)。...只是因为正常模式下,最后一个重名参数名会掩盖之前的重名参数。因此这个函数其实只有一个形参 a,4 才是它真正的实参。 严格模式下这是会报错的。...严格模式下函数形参是只读的,修改了形参的并不对报错,当然还是原来的,并没有被你修改掉。如果你真的有这个需求,可以声明一个变量,然后将形参赋给改变量。...这是因为严格模式下通过 this 传递给一个函数的不会被强制转换为一个对象;一个开启严格模式的函数,指定的 this 不再被封装为对象,而且如果没有指定 this 的话它是 undefined,可以使用...,而且 obj.x 的也不能被改变

95010
领券