Sim*_* Mo 15 javascript safari
Got this code, that works perfectly in all browsers but not in Safari (Version 11.1.2).
class Account {
accountFields = ['field1', 'field2', 'field3']
}
Run Code Online (Sandbox Code Playgroud)
Getting the following error in Safari debugger:
Unexpected token '='. Expected an opening '(' before a method's parameter list
所以我尝试在()任何地方添加,在数组周围,之前,之后等等。没有任何效果。
Nic*_*ons 25
您正在使用称为公共字段声明的实验性功能,该功能目前处于第 3 阶段。唯一支持此功能的 Safari 版本是 v14.1(2021 年4 月 26日发布)及更高版本。如果您需要支持旧版本的 Safari/更多种类的浏览器,您需要遵循以下建议之一。
您可以使用constructor() 方法来定义类实例的属性,而不是使用公共字段声明。使用构造函数确实具有良好的浏览器兼容性(对于 IE 支持,您可以使用构造函数):
class Account {
constructor() {
this.accountFields = ['field1', 'field2', 'field3'];
}
}
Run Code Online (Sandbox Code Playgroud)
正如@Baz在评论中指出的那样,您也可以使用 Babel 作为替代解决方案。使用 babel 意味着您不必更改代码,如果您在整个项目中大量使用公共字段声明,这可以使您更轻松。Babel 会将您的现代 JS 代码转译/编译为许多浏览器可以理解的旧(ES5 及以下)JS 代码。你可以像这样使用这个babel 插件。
首先,安装 babel 插件:
npm install --save-dev @babel/plugin-proposal-class-properties
Run Code Online (Sandbox Code Playgroud)
然后将插件添加到您的配置文件中:
{
"plugins": ["@babel/plugin-proposal-class-properties"]
}
Run Code Online (Sandbox Code Playgroud)
对于其他安装选项(babel CLI 等),请参阅插件文档的使用部分。
| 归档时间: |
|
| 查看次数: |
6838 次 |
| 最近记录: |