2016-07-21 6 views
0

Я делаю js/html5-canvas, где функция 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' не вызывает ничего. Чтобы вызвать функцию, вы должны поместить '()' после нее, с любыми аргументами, которые вы хотите внутри них (за исключением случаев, когда вы используете '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); 

Как видно на рисунке, значение переменной alrum_lysniveau 56 при вводе вызова testFunc, однако выходные данные записываются в формате HTML 0.

Я пытался смотреть на связанные сообщения из Quentin, касающиеся закрытия js, и поэтому я попытался сделать анонимную функцию, но это ничего не меняет, что я вижу.

[Тест код] http://i.stack.imgur.com/FtwnD.png