ECMAScript 2015(ECMAScript6)是否具有类初始值设定项
Does ECMAScript 2015(ECMAScript 6) have class initializer?
我最近查看了ECMAScript 2015
ECMAScript 2015有类初始值设定项吗?
例如,我试图像解析器一样编写类;
class URLParser {
parse(url) {
let regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
(....)
}
}
var a = new URLParser();
a.parse('http://example.com/abc');
a.parse('http://example.com/def');
var b = new URLParser();
b.parse('https://sample.net/abc');
b.parse('https://sample.net/def');
这个正则表达式在类中很常见,所以我只想初始化它一次
我知道使用构造函数来减少初始化,但会影响实例范围
我想知道如何简化初始化类范围。
谢谢。
没有。不过,有一个关于静态属性的建议。
在此之前,您可以一如既往地向原型添加共享属性:
URLParser.prototype.regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
并通过this.regex
在您的方法中访问它。
目前无法在ES6类中创建静态属性,只能创建静态方法。
但是,您可以将属性直接附加到类,这将模拟静态属性:
class URLParser {
parse(url) {
URLParser.regex.match(...);
(....)
}
}
URLParser.regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
它没有。有一个关于类级声明性初始化的建议,所以您可以进行
class URLParser {
static regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
}
然后在任何地方使用URLParser.regex
来访问它。一种更好、不那么冗长的方法是利用JS作用域,只将regex放在类之前。将正则表达式附加到类没有任何好处。
let regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
class URLParser {
parse(url) {
(....)
}
}
目前没有在JavaScript中创建static
属性的方法,但是,您可以在constructor
中定义属性
class URLParser {
constructor() {
this.regex = /(https?):'/'/([^'/]+)'/([^'?]*)'?([^#]*)#(.*)/;
}
parse(url) {
this.regex.match(url)
(...);
}
}
相关文章:
- 在MSCRM 2015中使用javascript限制多实体查找
- 如何在调试模式停止后查看Visual Studio 2015 Javascript控制台
- 他们是如何使用angular/jqLite find()方法按属性名称和值选择元素的?ng conf 2015
- ES6 (ECMAScript 2015) 模块:导入索引.js
- JS:如何将字符串(“2015年3月10日”)转换为Date对象
- ECMAScript 2015(ECMAScript6)是否具有类初始值设定项
- Visual Studio 2015 Update 2-'中的TypeScript模块;要求'未定义
- 我想使用纯Javascript从MS Dynamics CRM Online 2015添加/检索数据
- Visual Studio 2015 JavaScript Intellisense 奇怪的行为
- 剑道 UI - 自定义数字格式在 2015.3.1111 > 2016.1.412 之间更改
- Visual Studio 2015 NodeJS/Typescript 覆盖节点启动文件
- 如何在网页中使用ECMAScript6模块
- 如何在页面上显示时间、日期IP和URL?更新日期:2015年2月25日
- 从'获取本月的最后一天;2015-02-23'字符串(javascript)
- 正在分析CSS背景图像2015
- 减去2015-12-31的1个月得出2015-12-01
- 针对2015-16学年的javascript验证
- Dynamics CRM 2015:如何获得我创建的Web资源按钮,以引用我添加到表单中的Javascript库中的函数
- CRM 2015 Javascript,防止记录表单保存并关闭
- ECMA 2015 / ES6 不推荐使用哪些语言结构或 API