2017-01-01 4 views
-1

Моя проблема пытается передать переменную, определенную через подсказку, в метод объекта. В конце моего кода я пытаюсь передать переменную «house» в метод «.teamPick» в моем конструкторе класса, но не-go. Если я console.log (house), он печатает «гриффиндор», но когда я пытаюсь передать house.teamPick(), я получаю сообщение об ошибке «house.teamPick() не является функцией». Я нахожусь в конце своего ума.Javascript- Переменная переменная как метод

function House(color,broom) { 
    this.color= color; 
    this.broom= broom; 
    this.teamPick= function() { 
     alert("Throw on your"+" "+ this.color + " " + "robes, jump on your \n" + this.broom + ", " + "and let's play some Quidditch!") 
    }; 
}; 

var gryffindor= new House('red', 'Firebolt'); 

var house= prompt('What team do you choose?').toLowerCase(); 

if(house=== "gryffindor") { 
    house.teamPick(); 
}; 
+1

Try 'gryffindor.teamPick()'? Или 'window [house] .teamPick()' – Gerrit0

+1

'house' - это строка. Почему у него должен быть метод .teamPick? – geocodezip

+0

Gerrit(), окно [house] .teamPick() работал как шарм. Спасибо вам за это. Теперь я собираюсь попытаться исследовать, почему это сработало, поскольку я никогда не видел окна раньше. –

ответ

2

Вы используете неправильное значение (house) в конце вашего скрипта. house - это строковое значение, а не экземпляр House.

gryffindor является экземпляром House (создано с new House()), так что вы хотите использовать вместо этого.

Вы хотите, чтобы последние три строки, чтобы быть что-то вроде этого:

if(house === "gryffindor") { 
    gryffindor.teamPick(); 
}; 
+0

Спасибо за ответ. Ваш то, что вы предложили, работает, если я просто использую один экземпляр дома (этот пример - гриффиндор), но в моем полном коде у меня есть 4 домашних объекта, и я пытаюсь написать только одну строку кода, которая заполнит какой дом пользователь выбирает, а затем запускает .teamPick. Я мог бы просто написать большое if if else, используя все 4 возможности, но я стараюсь не повторять код как можно больше. –