gpt4 book ai didi

haxe - Firefox 中看不到静态属性

转载 作者:行者123 更新时间:2023-12-01 17:46:42 27 4
gpt4 key购买 nike

在我的 haxe 项目中,我的目标是 javascript,并使用 @:expose 公开类以从 haxe 项目外部调用它。

在我的 Main 类中,我使用 instance 来访问单音类。

喜欢:

com.Main.instance

现在,当我尝试访问类内的函数 ini 时,它仅在使用 Chrome 时有效,但在 Firefox 中会出现错误:

类型错误:com.Main.instance 未定义

知道为什么它可以在 Chrome 上运行,但不能在 Firefox 上运行吗?

我使用的是haxe版本3.4.0

已更新我添加了最小化的 haxe 示例文件来重现问题

package com;

import js.Browser;
@:expose
class Main {
/*
Using this var results in undefined
example at Firefox console:
>> com.Main.instance
undefined
*/
@isVar public static var instance(get, null):Main = null;

static function get_instance():Main {
if (instance == null)
instance = new Main();
return instance;
}

function new() {
}
static function main() {
trace('Hello World');
}
/*
Calling this method results in error
example at Firefox console:
>> com.Main.instance.init();
TypeError: com.Main.instance is undefined
*/
public function init(){
Browser.console.log("Main Initialized");
}
}

这是 HTML 页面:

<!DOCTYPE html>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>

<script type="text/javascript" src="map.js"></script>
</head>


<body >

<script>


$(document).ready(function () {
com.Main.instance.init();
});

</script>




</body>
</html>

这是编译后的map.js:

// Generated by Haxe 3.4.0
(function ($hx_exports) { "use strict";
$hx_exports["com"] = $hx_exports["com"] || {};
var com_Main = $hx_exports["com"]["Main"] = function() {
};
com_Main.get_instance = function() {
if(com_Main.instance == null) {
com_Main.instance = new com_Main();
}
return com_Main.instance;
};
com_Main.main = function() {
console.log("Hello World");
};
com_Main.init = function() {
window.console.log("Main Initialized");
};
com_Main.__meta__ = { statics : { instance : { isVar : null}}};
com_Main.main();
})(typeof exports != "undefined" ? exports : typeof window != "undefined" ? window : typeof self != "undefined" ? self : this);

//# sourceMappingURL=map.js.map

最佳答案

据我所知,并不真正支持从外部 JS 代码使用 Haxe 属性(请参阅问题 #2469 )。

您可以直接调用 getter(例如com.Main.get_instance().init())或检查该问题以获取其他解决方案。

<小时/>

注意:我无法确认该示例是否可以在 Chrome(59 或 60)中运行,而且实际上,我认为它不能运行。

关于haxe - Firefox 中看不到静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44887146/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com