【问题标题】:javascript - referencing a method inside class [duplicate]javascript - 引用类内的方法[重复]
【发布时间】:2020-05-22 01:54:59
【问题描述】:

我有一个用于呈现自定义范围滑块的类。在类内部,我需要引用一个在鼠标移动事件上触发的方法。因为我需要在 mouseup 上移除事件监听器,所以我必须引用它。

类的结构如下:

class RangeSlider {
    constructor(..){
        ...
    }
    setRangeValue = () => {
        ...
    }
}

在各种浏览器中一切正常,但我在错误日志中注意到一些用户收到错误:

SyntaxError: Unexpected token '='. Expected an opening '(' before a method's parameter list.

我真的不知道可能出了什么问题,因为通常我自己没有机会检查它,因为我在所有浏览器中都可以正常工作。有没有其他方法可以引用它,以便能够在鼠标抬起时删除事件侦听器?

【问题讨论】:

标签: javascript class-method


【解决方案1】:

TL;DR

class RangeSlider {
    constructor(..){
        ...
    }
    setRangeValue {
        ...
    }
}

你现在可以做什么

  1. 声明为:
class Foo {
  someFunction () {
    ...
  }
}
  1. 使用prototype继承。
class Foo {
 ...
}
Foo.prototype.bar = function () {
  ...
}

说明

class Foo {
  bar = () => {}
}

上面的代码sn-p在Foo类中创建了一个名为bar的变量,它的值是一个匿名函数。

目前,您不能在class 中声明变量,即不允许使用以下代码。

class Foo {
  bar = 'baz'
}

2020 年 1 月 23 日在 TC39 提案的Stage 3 中。如果必须使用它,可以与 babel 的插件 @babel/plugin-proposal-class-properties 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2012-11-25
    • 2020-02-09
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多