[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Prototype... (if else)
Mike_Kharkov
Здравствуйте!
Я новичёк как на этом форуме - так и вообще в Javascript.
Ранее изучал уроки Попова на эту тему(и многое с того времени подзабыл)
Но сейчас по советам некоторых знакомых перешел на уроки Дениса Фомичева и столкнулся со следующими вопросами:

// создание конструктора
function Cat(nameToSet, colorToSet, heightToSet, weightToSet, hungryToSet){

this.name = typeof nameToSet == 'undefined' ? 'Script' : nameToSet;
this.color = typeof colorToSet == 'undefined' ? 'black' : colorToSet;

this.height = typeof heightToSet == 'undefined' ? 30 : heightToSet; // cm
this.weight = typeof weightToSet == 'undefined' ? 5 : weightToSet; // kg

this.hungry = typeof hungryToSet == 'undefined' ? true : hungryToSet;

};

Cat.prototype.rename = function(newName) {
this.name = newName;
return true;
}

Cat.prototype. feeding = function() {
if (this.hungry) {
this.hungry = false;
alert('кот накормлен!');
return true;
}
else {
alert('кот и так уже сыт!');
return false;
}

}

// создание обьекта

var cat_1 = new Cat();

console.log('1ый кот:');
console.log(cat_1.name);
console.log(cat_1.color);
console.log(cat_1.height);
console.log(cat_1.weight);
console.log(cat_1.hungry);

cat_1.rename('Матроскин');


cat_1.feeding();
cat_1.feeding();

Вобщем непойму почему при условии существования конструкции
If
Else:
Выводится на экран в итоге и то и другое?
P.S. Буду благодарен за любой намек или подсказку по этому поводу...



Спустя 17 минут, 46 секунд (3.01.2012 - 18:23) sharki написал(а):
Mike_Kharkov
для того чтобы что-то расширять (прототипировать) надо это иметь, т.е где у тебя собсна объект Cat? где у тебя созданный св-ва объекта name color и т.п?

Еще надо учесть что this работаетв первую очередь локально, а потом уже берет глобальные функции\св-ва самого объекта.

Спустя 1 час, 31 минута, 47 секунд (3.01.2012 - 19:55) killer8080 написал(а):
Цитата (Mike_Kharkov @ 3.01.2012 - 17:05)
cat_1.feeding();
cat_1.feeding();

Вобщем непойму почему при условии существования конструкции
If
Else:
Выводится на экран в итоге и то и другое?

А что по твоему должно быть? Ты же сам дважды вызываешь метод feeding() user posted image

Спустя 53 минуты, 13 секунд (3.01.2012 - 20:48) Oyeme написал(а):
Переписать это можно намного красивее.
Cat.prototype = {
rename : function(name){
this.name = name;
},
feeding : function(){
if (this.hungry) {
this.hungry = false;
alert('кот накормлен!');
}
else {
alert('кот и так уже сыт!');
}
}
}
;

Вы 2 раза вызываете метод feeding.В первом случаи ответ true,во втором случаи false
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.