Я новичёк как на этом форуме - так и вообще в 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 работаетв первую очередь локально, а потом уже берет глобальные функции\св-ва самого объекта.
для того чтобы что-то расширять (прототипировать) надо это иметь, т.е где у тебя собсна объект 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()

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