Javascript-将变量作为方法传递

Javascript-将变量作为方法传递,javascript,variables,methods,Javascript,Variables,Methods,我的问题是试图将通过提示符定义的变量传递到对象方法中。在代码结束时,我尝试将变量house传递到类构造函数中的.teamPick方法中,但没有成功。如果我使用console.loghouse,它会打印“格兰芬多”,但当我试图通过house.teamPick时,会出现一个错误,即house.teamPick不是一个函数。我束手无策 function House(color,broom) { this.color= color; this.broom= broom; this

我的问题是试图将通过提示符定义的变量传递到对象方法中。在代码结束时,我尝试将变量house传递到类构造函数中的.teamPick方法中,但没有成功。如果我使用console.loghouse,它会打印“格兰芬多”,但当我试图通过house.teamPick时,会出现一个错误,即house.teamPick不是一个函数。我束手无策

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();
};

您在脚本末尾使用了错误的值。house是字符串值,而不是house的实例

格兰芬多是用new House创建的House的一个实例,所以这就是您想要使用的

您希望最后三行是这样的:

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

试试格兰芬多队吧?或窗口[房子]。teamPickhouse是一个字符串。为什么会有一个.teamPick方法呢?Gerrit,window[house]。teamPick工作得很有魅力。谢谢你。现在我要去尝试和研究为什么它能工作,因为我以前从未见过窗户。谢谢你的回复。如果我只使用一个house实例,那么你的建议是可行的。这个例子是格兰芬多,但是在我的完整代码中,我构建了4个house对象,我尝试只编写一行代码,填充用户选择然后运行的house。teamPick。我可以编写一个包含所有4种可能性的大型if/elseif语句,但我尽量不重复代码。