私のhaxeプロジェクトでは、javascriptをターゲットにして、@:expose
を使用してクラスを公開して、haxeプロジェクト外から呼び出すようにしました。Firefoxで静的プロパティが表示されない
私のMain
クラスでは、instance
を使用してシングルトーンクラスにアクセスしています。以下のような
:
今com.Main.instance
、私はクラス内の関数ini
にアクセスしようとすると、それはChromeを使用している場合にのみ動作しますが、それは、Firefoxでエラーが発生します。
TypeError: com.Main.instance is undefined
なぜChromeで動作していますが、Firefoxでは動作していないのでしょうか?私はhaXeのバージョン3.4.0
を更新しました、私はここで問題
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");
}
}
を再現するために、最小化haXeのサンプルファイルを追加を使用しています
は、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とソース(またはこの問題を再現する単純化されたバージョン)を貼り付けると、誰かがデバッグに役立つかもしれません。文脈がなければ、何が壊れているのかを知ることは不可能です。 – Chii