2013-08-27 2 views
1

Если возможно, я хотел бы использовать для удаления count и использовать аргумент в self.addOrbitTrap(). В настоящий момент для тестирования моего кода делает что-то вроде этого:setInterval() со счетом

Bbrot.prototype.findMSet = function() { 
    //...code 
    var self = this; 
    canvasInterval = setInterval(function() { 
     self.addOrbitTrap(); 
    }, 0); 
} 

var count = 0; 
Bbrot.prototype.addOrbitTrap = function() { 
    //...code 
    if (count === 100) { 
     // Call a different function. That's why I use count 
    } 
    count++; 
} 

Редактировать: Чтобы быть более конкретным, count используется в моем коде, чтобы подсчитать, сколько раз addOrbitTrap()успешно работает (это не добавляет если случайно выбранный пиксель является частью набора Мандельброта). После того, как он запускается некоторое количество раз, я вызываю другую функцию (от addOrbitTrap()). Я бы предпочел не использовать глобальную переменную, потому что count не используется нигде.

+1

ли COUNT ссылки где-то еще, что это глобальное? – tymeJV

+1

и что вы пробовали, что не работает? –

+2

Вы спрашиваете, можете ли вы добавить параметр 'addOrbitTrap'? Как это? 'Bbrot.prototype.addOrbitTrap = function (count) {...}'? Можете ли вы быть более ясными? – Strelok

ответ

1

Вы могли бы ввести count в качестве локальной переменной внутри findMSet, что вы передаете addOrbitTrap(); в каждом интервале значение будет увеличено:

Bbrot.prototype.findMSet = function() { 
    //...code 
    var self = this, 
    count = 0; 

    canvasInterval = setInterval(function() { 
     self.addOrbitTrap(++count); 
    }, 0); 
} 

Handling значения просто:

Bbrot.prototype.addOrbitTrap = function(count) { 
    //...code 
    if (count === 100) { 
     // Call a different function. That's why I use count 
    } 
} 
+0

Это именно то, что я хотел, спасибо – asimes

+0

Еще один вопрос, я не знаю, как 'count' хранится, когда заканчивается' Bbrot.prototype.findMSet = function() '. Мне это нужно только в 'Bbrot.prototype.addOrbitTrap = function (count)', поэтому он работает отлично, я просто не понимаю. – asimes

+0

@asimes Ваша анонимная функция объявляется с помощью 'count' в своей области; после завершения 'addOrbitTrap()' при вызове он все равно может получить доступ к этой переменной; это поведение делает JavaScript, ну, JavaScript :) –

1

просто введите переменную на объект и используйте его.

Bbrot.prototype.count = 0; 
Bbrot.prototype.findMSet = function() { 
    //...code 
    var self = this; 
    canvasInterval = setInterval(function() { 
     self.addOrbitTrap(); 
    }, 0); 
} 

Bbrot.prototype.addOrbitTrap = function() { 
    if(ranSuccessful) 
     this.count++; 
} 

Bbrot.prototype.someOtherFunc = function() { 
    return this.count; 
} 
+0

Я понял, что могу это сделать, но я надеялся преобразовать 'count' в вход в Bbrot.prototype.addOrbitTrap = function() {}'. Я предполагаю, что это немного OCD, но у меня достаточно переменных, хранящихся в 'Bbrot'. – asimes

+0

, откуда будет поступать вход? –

+0

Могу ли я изменить 'canvasInterval = setInterval (function() {self.addOrbitTrap();}, 0);' сделать это? – asimes

Смежные вопросы