当前位置: 首页 > 面试题库 >

JavaScript双冒号(绑定运算符)

常飞翼
2023-03-14
问题内容

如您所知,有一个.bind()功能快捷方式的建议,因此您可以编写:

::this.handleStuff

它将在es5中像这样工作:

this.handleStuff.bind(this)

我的问题是:是否可以通过这种方式传递参数?

我的意思是用上述快捷方式编写此代码的方法:

this.handleStuff.bind(this, 'stuff')

这是React中很常见的模式,因此最好将其缩短一点。


问题答案:

否。bind运算符(规范建议)有两种形式:

  • 方法提取

    ::obj.method     ≡ obj.method.bind(obj)
    
  • “虚拟方法”调用

    obj::function    ≡ function.bind(obj)
    

    obj::function(…) ≡ function.call(obj, …)

它们都不具有部分应用的功能。对于您想要的,应该使用箭头功能:

(...args) => this.handleStuff('stuff', ...args) ≡ this.handleStuff.bind(this, 'stuff')


 类似资料:
  • 问题内容: 我正在探索Java 8源代码,发现代码的这一特殊部分非常令人惊讶: 是类似方法指针的东西吗?普通方法如何转换为? 问题答案: 通常,可以使用以下方法调用该方法: 仅调用就需要很多语法。那就是lambda表达式起作用的地方。从Java 8开始,它允许以更短的方式执行相同的操作: 这是如何运作的?Java编译器“检测”你要实现一个接受两个ints并返回一个的方法int。这等效于接口的唯一方

  • 我在探索Java 8的源代码时,发现代码的这一部分非常令人惊讶: 是否类似于方法指针?普通的方法如何转换为?

  • 刚刚在java中尝试了一些东西,发现了以下问题。 以下是我的代码。 父接口: 子接口: 实施1: 实施2: 主要方法: 我不确定我做错了什么,我在本地机器中安装了JDK 13并使用IntelliJ 2019.3和JDK 11。我检查了IntelliJ是否支持JDK 13 谢谢 错误更新我在那里留下了一个分号,删除了它,请再次检查。

  • 问题内容: 显然,Java中冒号以多种方式使用。有人介意解释它的作用吗? 例如这里: 您将如何以不同的方式编写此循环,以便不合并? 问题答案: 在Java代码中冒号有几个地方: 1)跳出标签): 2)三元条件: 3)每个循环: 4)断言: 5)切换语句中的情况: 6)方法参考

  • 冒号:是MATLAB里面一个十分重要的算子,适用于各种不同的表达式。 例如表达式   1:10 表示一行从1到10的整数 1 2 3 4 5 6 7 8 9 10 为了改变递变的间隔,可以指定一个间隔长度 ,例如   100:-7:50 表示为 100 93 86 79 72 65

  • 问题内容: 我在一些代码中看到了这一点,但我不知道它的作用: 什么是运营商做? 问题答案: 那是一个双重的非按位运算符。用作的更快替代品