проблема с присвоением значения внутриклассовой переменной
Здравствуйте дорогие программисты! Вот, есть проблема, я не могу присвоить ничего внутреклассовой переменной. Может проблема в синтаксисе, но я в описания синтаксиса 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, время: 05:33. |