Предполагая, что вы ожидаете получать оповещение или другое на основании условия, когда вы звоните dog.response()
, но вы всегда получаете одно и то же оповещение.
Вы можете решить проблему двумя способами
Обновление объекта
- В
randomizer
установите значение случайного значения в свойстве и верните то же свойство.
- В
response
проверьте значение и отобразите предупреждение.
var dog = {
name: "Fluffy",
leash: [true, false],
randomizer: function() {
this.leashed = this.leash[Math.floor(Math.random() * this.leash.length)];
return this.leashed;
},
call: function() {
alert("Honey, " + this.name + " needs to pee…");
},
response: function() {
alert("Ok, i got it, dear…");
if (!this.leashed) {
alert("You've got to put his leash on first");
} else alert("Enjoy your walk…");
},
};
dog.randomizer();
dog.call();
dog.response();
Получить значение и передать его
- В
randomizer
, получить случайное значение, вернуть его.
- В
response
передать случайное значение, проверить значение и показать предупреждение.
var dog = {
name: "Fluffy",
leash: [true, false],
randomizer: function() {
return this.leash[Math.floor(Math.random() * this.leash.length)];
},
call: function() {
alert("Honey, " + this.name + " needs to pee…");
},
response: function(leashed) {
alert("Ok, i got it, dear…");
if (leashed) {
alert("You've got to put his leash on first");
} else alert("Enjoy your walk…");
},
};
let leash = dog.randomizer();
dog.call();
dog.response(leash);
Обратите внимание, в исходном коде также были ошибки
- В
randomizer
нет LHS для this.leash[Math.floor(Math.random() * this.leash.length)]
- В
randomizer
, this.leash
возвращает массив в сравнении с ожидаемым случайным значением
- В
response
, this.leash = false
является назначением, а не сравнением. Для сравнения вам нужно будет использовать ==
или ===