проблема с присвоением значения внутриклассовой переменной
Здравствуйте дорогие программисты! Вот, есть проблема, я не могу присвоить ничего внутреклассовой переменной. Может проблема в синтаксисе, но я в описания синтаксиса js такого не находил, в общем, жду помощи =)
var objects=[]; var object = function(blabla){ that={ blabla: blabla, move: function(){ if (blabla == true) {alert("true!!!");} } }; return that; }; objects.push(object(false)); objects[0].blabla=true; setInterval(function(){ for(var i=0;i<objects.length;i++){ objects[i].move(); } },30); if(objects[0].blabla==false){alert("false!!!")} ну примерно так, присваиваю при создание объекта false, а потом уже присвоить true не получается, почему? |
это проблема одного большого скрипта, я просто ее выписал... И не знаю что здесь вот делать, alert ы поставил, и по идеи все должно работать но вот не хочет не первый не второй срабатывать...
|
вот в таком случае верхний алерт не реагирует, но почему?
var objects=[]; var object = function(blabla){ that={ blabla: blabla, move: function(){ if (blabla==true){alert("true!!!");} } }; return that; }; objects.push(object(false)); objects[0].blabla=true; setInterval(function(){ for(var i=0;i<objects.length;i++){ objects[i].move(); } },30); //if(objects[0].blabla==true){alert("true!!!")} |
SVARAI,
var objects=[]; var object = function(blabla){ var that={ blabla: blabla, move: function(){ if (this.blabla == true) {alert("это правда!!!")} } }; return that; }; objects.push(new object(false)); alert(objects[0].blabla) objects[0].blabla=true; objects[0].move() |
SVARAI, Вероятно ты хотел написать if (this.blabla == true) ...
Потому как blabla - это локальная переменная, переданная в функцию как аргумент. И ее значение не изменяется, поэтому она всегда == false |
она не может измениться даже если я на нее ссылаюсь objects[0].blabla ???
|
Цитата:
Цитата:
И следовательно, в методе move проверять нужно тоже свойство объекта, а не локальную переменную. |
Кстати код твой лучше так переписать:
// Имя конструктора принято писать с большой буквы function Object(blabla){ this.blabla = blabla; } // Методы и константы нужно выносить в прототип Object.prototype.move = function() { // сравнивать с true глупо (за исключением строгого сравнения ===) if (this.blabla) { alert("это правда!!!") } }; |
чувак, ты просто свойство обьекта и переменную одинаковыми именами назвал вот и путаешься, назови разными и путаницы не будет.
function qq(qq){ var obj = {qq:11} this.qq = 22; } вот тебе 4 разных вещи названных одним именем, велком ту javascript |
Часовой пояс GMT +3, время: 19:28. |