我正在将一些Java代码转换为Javascript,Java对象有一个静态初始化块,用于填充对象中的两个数组.我的理解是,无论创建多少个对象,此初始化程序只运行一次.我可以在Javascript中做这样的事情吗?
Java代码:
public final class MyObject {
private MyObject() { }
// ...
static {
// Run once static init code here
}
}
Run Code Online (Sandbox Code Playgroud)
这个run-once样式初始化可以在Javascript中完成吗?
谢谢
并不是的.
"静态"成员的整个概念并不真正适用于javascript.你可以实现它们,但只能以"公共"方式实现.
这样做可以满足您的要求,但它实际上只是"由构造函数触发一次运行此函数"的一堆kludgy语法.
function MyObject()
{
if ( 'undefined' == typeof MyObject.__initialized )
{
// static stuff
alert( 'hi' );
MyObject.__initialized = true;
}
// Proceed with constructing instance of MyObject
}
new MyObject();
new MyObject();
Run Code Online (Sandbox Code Playgroud)
是的,ES6 类有一些技巧。
class MyClass {
static #unused = MyClass.#init();
static #init() {
// Your initialization logic
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |