外部関数を呼び出すときに閉鎖が失敗しそう:アイデアはGraphics
でGraphics()
機能を呼び出すことにより、内部コードから視覚的にコードを分離することであるJavascriptを - 私は現在のような構造の小さなゲームを作ってるんだ
let Game = function() {
let privateVar;
// private would be an example private variable assigned later
// Other private variables go here
return {
Engine: function() {
// More specific private variables
init: function() {
privateVar = this.sampleValue;
// Game.Engine.sampleValue doesn't help either
// Start up everything, for example, calling a Graphics method:
Game.Graphics.method1();
},
sampleValue: 10,
// Other methods
}
Graphics: Graphics()
}
}
function Graphics() {
// Visuals-specific private variables
return {
method1: function() {
console.log(privateVar);
// This would complain about the variable not being defined
}
// methods
}
}
Game.Engine.Init();
方法(例えば、別のファイルでGraphics()
関数をビルドすることができます)。しかし、私がこれを行うと、Graphics
メソッドは、最初に宣言されたinit
メソッドで割り当てられたプライベート変数を失い、Graphics
の何らかのメソッドで呼び出されたときはいつもUncaught ReferenceError: private is not defined
を吐き出します。
Graphics()
でこれらの秘密を再割り当てするのは1つの解決策だと思っていますが、それは多分目的を殺すでしょう。誰でも良い考えがありますか?前もって感謝します。
編集:コードは少し簡単に、あなたのグラフィックスタイプがそれらにアクセスべきではありませんプライベート変数をしたい場合は、私が
それはあなたの何私にははっきりしていません実際の質問。期待どおりに動作しないものはありますか?その場合は、再現可能な例を提供してください。 – abl
上記のコードスニペットは構文的に間違っています。それを修正してください。 – alicanerdogan