2016-07-21 21 views
0

js関数は、html5キャンバスといくつかのグローバル変数に基づいて、シンボルのアニメーション/描画を実行するものです。js/html5-canvasを実行しています。後者は外部jsから書かれています。Javascript:関数のインスタンスを呼び出す

変数が直接親関数を呼び出すと、私の関数は動作しますが、 "var x = new myFunction(args,..,..,..)"でインスタンス化して "x"を呼び出すと、引数がかなり得られません。

私はJavaScriptの方が新しくなっていますので、私は間違ったことをやっていると思っています。あなたが助けてくれることを願っています。

// JavaScript Document// JavaScript Document 
// Global Vars 
var alrum_lysniveau = 0; 
var alrum_setlysniveau = 0; 
var alrum_gbLys; 
var alrum_on = false; 
var alrum_off = false; 

// Init function 

function init() { 

    function dimSymbol(idCanvas, idBtnOn, idBtnOff, idSliderDiv, idSliderRange, lysniveau, rum, lys) { 
     // Code for dimSymbol, not included here. 

    }; 

    var alrumDim = new dimSymbol("canvasAlrum", "butOnAlrum", "butOffAlrum", "sliderAlrum", "sliderRange", alrum_lysniveau, "Alrum", alrum_gbLys); 
    alrumDim; 
} 


// Load af function LivingRoom, når siden er indlæst 
window.addEventListener('load', init, false); 
+0

は、*と*「x」を呼び出す - なぜあなたはコンストラクタ関数で作成されたオブジェクトを呼び出すでしょうか?通常は、メソッドを呼び出します。 'x'は何も呼び出さない。関数を呼び出すには、引数の後ろに '()'を入れなければなりません。引数がない場合に '()'がオプションになるときに 'new'を使うときを除いて、ここでは 'new alrumDim'とは言わないからです)。 – Quentin

+0

こんにちはクエンティン、コメントありがとう。なぜ答えているのではなく、私がここでやろうとしていることを熟考してください。 私はこの機能「dimSymbol」を持っています。約70行のコードが含まれています。私は同じページで複数回同じ関数を実行したいが、異なる引数を使用して、毎回同じ70行のコードをコピーする必要はありません。 alrumDimはそのようなインスタンスであると想定され、 "alrumDim;"それを実行することです。 – MCSN

+0

"alrumDimはそのようなインスタンスであるはずです" - したがって関数ではありません。 'dimSymbol'を複数回呼び出す場合は、' dimSymbol'を複数回呼び出してください。 – Quentin

答えて

0

あなたがいつでもどこでも同じパラメータで毎回ごdimSymbol機能を呼び出すために使用できる変数を持ってしようとしている場合は、あなたがに保存されている新機能の内dimSymbolに電話を入れることができます変数。

var alrumDim = function() { 
    return dimSymbol("canvasAlrum", "butOnAlrum", "butOffAlrum", "sliderAlrum", "sliderRange", alrum_lysniveau, "Alrum", alrum_gbLys); 
}; 
alrumDim(); 
0

私の返信はここにあるので、コメントトラックの画像をQuentinからリンクできませんでした。

例を作ってみました。コードはこのようである:画像に見られるよう

function testFunc(x, y) { 
    var elem = document.getElementById(x); 

    elem.innerHTML = "Test message " + y; 
} 

testFunc("testdisplay", alrum_lysniveau); 

testFuncコールを入力するとき、変数alrum_lysniveauの値が、しかし、HTMLに書き込まれたデータの出力が0

56である私が見てみましたクエンティンからのリンクされた投稿、jsの閉鎖に関して、そして私は無名関数のためのリターンを作ろうとしましたが、それは私が見ることができるものを変更しません。その後、

[テストコード] http://i.stack.imgur.com/FtwnD.png

関連する問題