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

无法对对象方法中的箭头函数执行.bind上下文

对于无法对对象方法中的箭头函数执行.bind上下文的问题,可以从以下几个方面进行解答:

  1. 箭头函数与普通函数的区别:
    • 箭头函数是ES6引入的一种新的函数语法,相比普通函数具有更简洁的语法形式。
    • 箭头函数没有自己的this,它会继承外层作用域的this值,因此无法通过.bind()方法改变其上下文。
  • 对象方法中的箭头函数:
    • 当箭头函数作为对象的方法时,它的this值会继承外层作用域的this,而不是指向该对象本身。
    • 由于箭头函数没有自己的this,因此无法使用.bind()方法来改变其上下文。
  • 解决方法:
    • 如果需要在对象方法中使用.bind()方法改变箭头函数的上下文,可以将箭头函数改为普通函数。
    • 可以使用普通函数的方式定义对象方法,以便能够通过.bind()方法来改变其上下文。
  • 示例代码:
  • 示例代码:

总结:由于箭头函数没有自己的this,无法使用.bind()方法来改变其上下文。如果需要在对象方法中改变箭头函数的上下文,可以将箭头函数改为普通函数,并使用.bind()方法来改变上下文。

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

相关·内容

执行函数改变 this 指向以及方法

执行函数改变 this 指向以及方法 最开始还想把这个笔记名字改成 bind apply call 之前区别,但是,想了想记录笔记还是要从原因开始,再到为什么再到怎么做。...所以,还是改成 执行函数改变 this 指向以及方法。 改变 this 指向方法执行 bind,apply,call 都是执行函数时,用来改变 this 指向。...所以,执行时候就会 输出 undefined 。因为,在 setTimeout 这个域下找不到这个 model 参数。这个就需要把 这个 this 指向改成指向 fighter 这个对象。...那么,Plane this 就指向了 fighter ,更简单理解就是,这个时候 Plane 函数体放在了 Fighter ,也就是继承。...console.log(this.num); }.bind(this), 1000); }, }; obj_2.getNum(); // output // 123 以上是我函数改变 this

1.2K61
  • 【前端进阶】深入浅出 JavaScript this

    ,当然也加上了很多我个人理解,我觉得肯定大家有所帮助 执行上下文 在理解 this 之前,我们先来看下什么是执行上下文 简而言之,执行上下文是评估和执行 JavaScript 代码环境抽象概念...一个程序只会有一个全局执行上下文 函数执行上下文 — 每当一个函数被调用时, 都会为该函数创建一个新上下文。每个函数都有它自己执行上下文,不过是在函数被调用时创建。...当函数引用有上下文对象时,隐式绑定规则会把函数调用 this 绑定到这个上下文对象。...但是 ES6 中介绍了一种无法使用 这些规则特殊函数类型:箭头函数 箭头函数不使用 this 四种标准规则,而是根据定义时候外层(函数或者全局)作用域来决 定 this。...由于 foo() this 绑定到 obj1, bar(引用箭头函数) this 也会绑定到 obj1,箭头函数绑定无法被修改。(new 也不 行!)

    38820

    JavaScript this 指向所有场景详细分析(译)

    下边主要以浏览器执行环境来分析。 img 在「函数直接调用」执行上下文就是全局对象,也就是 this 指向。...绑定函数 定义:执行上下文或者参数被绑定了具体值函数。可以通过 .bind() 进行创建。原始函数和新函数共享了相同代码和作用域,但是执行时候拥有不同执行上下文和参数。...箭头函数不会创建自己执行上下文,而是将 this 指向外部函数已经创建执行上下文。...6.2 陷阱:用箭头函数作为一个对象方法 ⚠️ 既然箭头函数这么简洁方便,你可能想将对象一个方法来用箭头函数声明,(param) => {...}...「方法调用」?「构造函数调用」?「间接调用」? 如果是绑定函数就问自己: 这个函数 bind 时候传什么参数? 如果是箭头函数就问自己: 箭头函数是在哪里定义,它外部执行上下文是什么?

    51120

    JavaScriptthis指向哪?

    机制,来调用对象内部属性,如下代码:而 js 引擎在执行代码时运行时上下文主要有三种:全局执行上下文函数执行上下文和 eval 执行上下文。...this指向bind参数上下文对象 var test2 = test.bind(this); test2();//test //3. apply方法会将this...但是将变量放到对象后,就与该对象进行关联。所以该方法执行 this 执行了 lostObj2对象。...this 绑定;箭头函数没有自己 this 绑定,它只能继承外部作用域 this 值,无法在运行时改变绑定对象,而且也无法通过显式绑定来改变 this 指向。...this继承全局上下文this,显式绑定无法修改箭头函数this值testObj4.arrowFun();//windowtestObj4.arrowFun.apply({});//windowtestObj4

    15010

    JavaScript 设计模式学习第二篇-关于this、new、bind、call、apply

    隐式绑定 函数是否在某个上下文对象调用,如果是的话 this绑定是那个上下文对象。...如果是的话,this 绑定是指定对象; 3. 隐式绑定:函数是否在某个上下文对象调用?如果是的话,this 绑定是那个上下文对象; 4. 如果都不是的话,使用默认绑定。...箭头函数 this 绑定是无法通过 call、apply、bind 被修改,因为箭头函数没有构造函数 constructor,所以也不可以使用 new 调用,即不能作为构造函数,否则会报错。...箭头函数 arguments、super、this 或 new.target 任何引用都解析为当前所在词法作用域中绑定。通常,这是箭头函数所在函数作用域。...首先执行是 obj.foo(),这是一个箭头函数箭头函数不创建新函数作用域直接沿用语句外部作用域,因此 obj.foo() 执行箭头函数 this 是全局 window,首先打印出 window

    28610

    深入理解Jsthis

    scope,当一个方法或成员被声明,他就拥有当前执行上下文context环境,在有具体值context,表达式是可见也都能够被引用,如果一个变量或者其他表达式不在当前作用域,则将无法使用。...全局作用域 直接声明在顶层变量或方法就运行在全局作用域,借用函数[[Scopes]]属性来查看作用域,[[Scopes]]是保存函数作用域链对象,是函数内部属性无法直接访问但是可以打印来查看。...,那么就可以使用apply、call、bind强制绑定this去执行即可,每个Function对象都存在apply()、call()、bind()方法,其作用都是可以在特定作用域中调用函数,等于设置函数体内...this对象值,以扩充函数赖以运行作用域,此外需要注意使用bind绑定this优先级是大于apply和call,即使用bind绑定this后函数使用apply和call是无法改变this指向...箭头函数没有单独this,在箭头函数函数体中使用this时,会取得其上下文context环境this。

    42810

    你知道多少this,new,bind,call,apply?那我告诉你

    通过call,apply,bind可以改变this指向,this指向一般指向它调用者,默认挂载在window对象下。es6箭头函数,this指向创建者,并非调用者。...(除了箭头函数)记住一点:this始终指向调用它对象对象方法this,指向调用它对象。...this使用场景: 作为构造函数被new调用,作为对象方法使用,作为函数直接调用,被call,apply,bind调用,箭头函数this。...箭头函数this是根据其声明地方来决定this,它是ES6出现知识点,箭头函数this,是无法通过call,apply,bind被修改,且因箭头函数没有构造函数constructor,...箭头函数arguments,super,this或new.target任何引用都解析为当前所在词法作为域中绑定,通常,这就是箭头函数所在函数作用域。

    38410

    JavaScript this 使用技巧总结

    函数执行 纯粹函数调用 这是最普通函数使用方法了: ?...call, apply, bind 在 js 函数也是对象,同样也有一些方法,这里我们介绍三个方法,他们可以更改函数 this 指向: call ?...它会立即执行函数,第一个参数是指定执行函数 this 上下文,第二个参数是一个数组,是传给执行函数参数(与 call 区别); bind ?...可以看到,虽然指定 this 不起作用,但是传入参数还是起作用了; 为箭头函数指定 this 我们来定义一个全局下箭头函数,因此这个箭头函数 this 必然会指向全局对象,如果用 call 方法改变...(call, apply, bind) 等操作都无法改变它 this。

    87130

    深入理解this绑定

    确定当前执行函数调用位置,有两种方法: 1.1 分析调用栈 调用栈即:为了到达当前执行位置所调用所有函数。而当前执行函数调用位置就在该函数前一个调用。...foo(); // 2 })(); 2.2 隐式绑定 当函数引用有上下文对象时(或者说被某个对象“包含”/“拥有”),隐式绑定规则会把函数this绑定到这个上下文对象。...var bar = foo.call(obj2) 函数是否在某个上下文对象调用(隐式绑定)?如果是的话,this 绑定是那个上 下文对象。...// 绑定丢失,应用软绑定 setTimeout( obj2.foo, 10 ); // name: obj 5 this词法 5.1 箭头函数 ES6新增了箭头函数,上述四条规则这种函数是不生效。...需要注意是,箭头函数绑定无法被修改 —— 因为箭头函数没有自己 this,所以是不能对它使用 call,apply,bind ,new也不行。

    47610

    JS this 在各个场景下指向

    Java、PHP或其他标准语言来看,this 表示类方法当前对象实例。大多数情况下,this 不能在方法之外使用,这样就比较不会造成混淆。...在函数调用this this 在函数调用是一个全局对象对象执行环境决定。在浏览器,this是 window 对象。 ? 在函数调用执行上下文是全局对象。...绑定函数 绑定函数是与对象连接函数。通常使用.bind()方法从原始函数创建。原始函数和绑定函数共享相同代码和作用域,但执行上下文不同。...箭头函数this this 定义箭头函数封闭上下文 箭头函数不会创建自己执行上下文,而是从定义它外部函数获取 this。 换句话说,箭头函数在词汇上绑定 this。 ?...陷阱: 用箭头函数定义方法 你可能希望使用箭头函数来声明一个对象方法

    4.4K10

    JavaScript基础知识梳理(上)

    普通函数箭头函数this 原始数据类型及其判断和转化方法 深浅拷贝及实现 JS 事件模型 常见高阶函数 普通函数箭头函数 this 还是一道经典题目,下面的这段代码输出是什么?...① es5 普通函数函数被直接调用,上下文一定是window 函数作为对象属性被调用,例如:obj.foo(),上下文就是对象本身obj 通过new调用,this绑定在返回实例上 ② es6 箭头函数...({ a: 1 })(); // Output: 1 ③ bind 绑定上下文返回函数:就是被第一个 bind 绑定上下文,而且 bind 箭头函数”无效。...,上下文由第一个bind上下文决定 run.bind({ a: 2 }).bind({ a: 1 })(); // output: 2 最后,再说说这几种方法优先级:new > bind > 对象调用...原始类型转化 当我们一个“对象”进行数学运算操作时候,会涉及到对象 => 基础数据类型转化问题。 事实上,当一个对象执行例如加法操作时候,如果它是原始类型,那么就不需要转换。

    54930

    Python函数无法调用另一个函数解决方法

    对于正常我们在编程,尤其在python,各函数之间正常来说都是可以相互调用,如果发现函数无法调用另一个函数情况,正常来说会有多种方面的原因。下面的问题我们可以一起看看。...1、问题背景在 Python ,有时会遇到函数无法调用另一个函数问题。这通常是由于函数内部 return 语句导致。return 语句作用是终止函数执行并返回一个值给调用者。...如果 return 语句出现在函数中间,那么后面的代码将不会被执行,包括其他函数调用。2、解决方案为了解决这个问题,需要将函数调用移动到 return 语句之前。...除了移动函数调用位置,还可以通过使用异常处理来解决这个问题。在下面的例子,right_room() 函数使用了 try 语句来捕获 opening() 函数可能抛出异常。...上面就是今天全部内容了,如果您遇到了函数无法调用另一个函数具体问题,可以提供更多细节或代码示例,以便我可以更具体地帮助您解决问题。

    24210

    《你不知道JavaScript》-- this(笔记)

    当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文),这个记录会包含函数在哪里被调用(调用栈)、函数调用方式、传入参数等信息,this 就是这个记录一个属性,会在函数执行过程中用到。...2.2 隐式绑定 当函数引用有上下文对象时,隐式绑定规则会把函数调用 this 绑定到这个上下文对象: function foo(){ console.log(this.a); } var...,实际上我们无法控制回调函数执行方式,因此就没办法控制调用位置以得到期望绑定。...如果是的话,this 绑定是指定对象; 3)函数是否在某个上下文对象调用(隐式绑定)?...foo() this,由于 foo() this 绑定到 obj1,bar(引用箭头函数 this 也会绑定到 obj1,箭头函数绑定无法被修改(new也不行)。

    29920

    箭头函数与普通函数区别

    指向是动态: 从上面的例子可以看出,fn函数this本应指向window,后面我们通过bind方法函数this指向改变为了obj对象,所以打印出obj。...可以看出,普通函数this指向可以通过bind、call、apply等方法进行改变,this指向是动态。...【箭头函数】 无论是严格模式还是非严格模式下,this始终指向window: 箭头函数没有自己执行上下文,this指向是在定义函数时就被确定下来箭头函数this,永远指向外层作用域中最接近自己普通函数...箭头函数会忽略任何形式this指向改变(bind、call、apply等方式无法改变箭头函数this指向),箭头函数this指向是静态: 03 【从构造函数来看】 【普通函数】 通过new关键字调用普通函数...(作为构造函数),this指向被创建出来对象实例: 【箭头函数箭头函数不能当做构造函数来使用: 04 【从arguments对象来看】 【普通函数】 在普通函数,arguments是类数组对象

    72420

    JS 几种轻松处理’this’指向方式

    我喜欢在JS更改函数执行上下文指向,也称为 this 指向。...简单来说,它使用来自其定义外部函数this值。 建议在需要使用外部函数上下文所有情况下都使用箭头函数。 4. 绑定上下文 现在让咱们更进一步,使用ES6类重构Person。...但是有一个涉及bind()方法技巧,它将方法上下文绑定到构造函数: ```JavaScript class Person { constructor(firstName, lastName...这种方法是在类绑定this最有效和最简洁方法。 6. 总结 与对象分离方法会产生 this 指向不正确问题。静态地绑定this,可以手动使用一个附加变量self来保存正确上下文对象。...然而,更好替代方法是使用箭头函数,其本质上是为了在词法上绑定this。 在类,可以使用bind()方法手动绑定构造函数方法

    1K20

    JavaScriptthis指向问题

    使用call、apply或bind改变函数this指向:有时候我们需要在函数执行时改变函数内部this指向,可以使用call、apply或bind方法来实现。...在上面的代码,通过call、apply或bind方法,我们可以将sayHello函数this指向person1或person2对象。...此外,需要注意是,在箭头函数,this绑定方式与普通函数不同。箭头函数this绑定是词法作用域,即继承自上级作用域,并且不受调用方式影响。因此,在箭头函数无法使用隐式绑定。...箭头函数this 箭头函数this是如何工作: 在箭头函数,this值是在函数定义时确定,而不是在函数调用时确定箭头函数会捕获其所在上下文this值,并在函数体内部使用。...可以使用箭头函数bind()方法,或通过在外部函数中将this赋值给一个变量来解决这一问题。 对象方法this:在对象方法,this通常指向调用该方法对象

    24960

    你不知道this(2)

    我们关系调用位置就在当前正在执行函数前一个调用。...当函数引用有上下文对象时,隐式绑定规则会把函数调用this绑定到这个上下文对象。因为调用foo()时this被绑定到obj,因此this.a和obj.a是一样。...遗憾是,这些工具通常无法选择是否启用这个行为。无论是哪种情况,this改变都是意想不到,实际上你无法控制回调函数执行方式,因此就没有办法控制会影响绑定调用位置。...创建(或者说构造)一个全新对象 这个新对象会被执行 [ 原型 ] 连接 这个新对象会绑定到函数调用 this 如果函数没有返回其他对象,那么 new 表达式函数调用会自动返回这个新对象 我们现在关心是第...this词法 我们之前介绍四条规则已经可以包含所有正常函数。但是ES6介绍了一种无法使用这些规则特殊函数类型:箭头函数

    51410

    this理解

    这种情况下,函数this指向调用该方法对象,这就类似于传统面向对象语言:this指向接受者,方法被调用对象。这里同样需要注意bind()影响。...再次强调,函数内部this指向与定义无关,受调用方式影响。 方法 this 指向全局对象情况 注意这里说方法而不是指在方法调用。...jQuery大多数回调函数(非箭头函数)this都是表示调用目标,所以可以写$(this).text()这样语句,但jQuery无法改变箭头函数this指向,同样语句语义完全不同。...,箭头函数不能用new调用,不能bind()到某个对象(虽然 bind() 方法调用没问题,但是不会产生预期效果)。...,最后一个调用该函数对象是传到函数上下文对象(绕懵了)。

    53130

    JavaScript执行(三):你知道现在有多少种函数吗?

    要想认识这些函数执行上下文切换,我们必须要对它们行为上区别有所了解。 普通变量而言,这些函数并没有本质区别,都是遵循了“继承定义时环境”规则,它们一个行为差异在于 this 关键字。...在这个例子,Reference 类型对象被当作 this 值,传入了执行函数上下文当中。...至此,我们 this 解释已经非常清晰了:调用函数时使用引用,决定了函数执行时刻 this 值。 实际上从运行时角度来看,this 跟面向对象毫无关联,它是与函数调用时使用表达式相关。...JavaScript 用一个栈来管理执行上下文,这个栈每一项又包含一个链表。 如下图所示: 当函数调用时,会入栈一个新执行上下文函数调用结束时,执行上下文被出栈。...这时候,它们无法实现改变 this 能力,但是可以实现传参。 结语 在这一节课程,我们认识了 ES2018 规定各种函数,我一共简单介绍了 8 种函数

    43030
    领券