2016-02-26 3 views
-1

Это мое текущее назначение:Возникли проблемы Понимание Javascript Методы

  1. Добавить метод, который увеличит значение одного из числовых свойств.
  2. Добавьте метод, который уменьшит значение того же численного свойства.
  3. Создайте цикл for после создания экземпляра символа. Цикл будет повторяться 100 раз.
  4. Внутри цикла вызывается один из методов, основанный на случайном числе от нуля до 3. Используя оператор switch, если значение равно 0, то вызовите метод, который потеряет; 1 ничего не называйте; 2 вызовите метод, который получает.

Вот моя текущая кодировка. Я знаю, что я делаю что-то неправильно. Я просто не могу понять, что я делаю неправильно с оператором switch.

var BR = "<br />"; 

function person(name, sandwiches) { 
this.name = name; 
this.sandwiches = sandwiches; 


function jump() { 
    var text = " leaps over an obstacle."; 
    return fname + text; 
    } 

function run() { 
    var text = " runs as fast as they can"; 
    return fname + text; 
    } 

function dodge() { 
    var attack = math.random(); 
    var att = math.round(attack); 
    var defense = math.random(); 
    var def = math.round(defense); 
    if(att > def) { 
     return "You missed"; 
    } 
    else { 
     return "You dodged"; 
    } 
} 

function date() { 
    var today = new Date(); 
    return today.toDateString(); 
} 

function shout() { 
    var word = "Oh no"; 
    return word.toUpperCase(); 
} 

this.addSandwich = function (sandwiches) { 
    sandwiches = sandwiches + 1; 
    return sandwiches; 
}; 

this.loseSandwich = function (sandwiches) { 
    sandwiches = sandwiches - 1; 
    return sandwiches; 
}; 


} 

    var character = new person("Jerry", 1); 

    for(i=0; i < 100; i++) { 
     var random = Math.floor(Math.random() * 3); 

     switch(random) { 
      case 0: 
       character.loseSandwich(character.sandwiches); 
       console.log(sandwiches); 
       break; 

      case 1: 
       break; 

      case 2: 
       character.addSandwich(character.sandwiches); 
       break; 
     } 
    } 

    document.write("Name: " + character.name + BR); 
    document.write("Sandwiches: " + character.sandwiches + BR); 
+0

Откуда вы знаете, что делаете что-то неправильно? Вы получаете ошибку javascript? Не ожидаемый результат? – Ageonix

ответ

0

Math.floor (Math.random() * 3) не то, что вы хотите.

Вы хотите что-то вроде Math.random()% 3, чтобы получить 0, 1 или 2 каждый раз

+0

Я собирался предложить нечто подобное. Также к OP, ваш console.log (sandwhiches) будет терпеть неудачу. Используйте console.log (character.sandwhiches). Кроме того, я бы избегал использования document.write(). Я знаю, что это просто задание, но его хорошая практика - просто избежать этого. – Ageonix

+0

Почему, по-вашему, он должен использовать модуль вместо этого? random производит число 0 (включительно) до 1 (исключая), поэтому любое число, которое он порождает% 3, всегда будет равным самому случайному числу. Например, 0,123% 3 = 0,123 – CodingWithSpike

0

Не уверен, если это ваша проблема, но она, по крайней мере один из них;

В некоторых местах у вас есть строчной math, например:

function dodge() { 
    var attack = math.random(); 

JavaScript чувствителен к регистру, и оно должно быть Math.random() не math.random()


Другая проблема заключается в том, что эти функции :

this.addSandwich = function (sandwiches) { 
    sandwiches = sandwiches + 1; 
    return sandwiches; 
}; 

d o не менять количество бутербродов. Вы получаете значение бутербродов, добавляете или вычитаете 1, а затем возвращаете это измененное число, но никогда не используете возвращаемый результат. Вы изменяете значение переменной, которая была передана, но не меняете количество бутербродов на экземпляре человека.

Обратите внимание, что this.sandwiches (переменный на экземпляре person) не является тем же переменным, как sandwiches (аргумент функции)

Я не думаю, что есть какая-либо причина, чтобы передать количество бутербродов в эти функции, и они могли бы просто сделать:

this.addSandwich = function() { 
    this.sandwiches = this.sandwiches + 1; 
}; 

или более просто:

this.addSandwich = function() { 
    this.sandwiches++; 
}; 

Другая проблема здесь:

  character.loseSandwich(character.sandwiches); 
      console.log(sandwiches); 

console.log оператор пытается войти sandwiches, но это не является переменной в этой точке. Вы, вероятно, хотели console.log(character.sandwiches); Однако это не вызвало бы исключение, оно всегда всегда регистрировало undefined.

Смежные вопросы