基于if语句结果创建对象的新实例,将用户输入值与随机值进行比较。我希望它创建一个对象的新实例,如果这是真的,并且每次这个比较产生true时都这样做。
object.create()会成为这样做吗?
var firstthing = new thing();
function createnewthing()
{
var entry = document.getElementById('theirentry').value;
if (oneobjectinaclass == "type1")
var firstvalueinarray = type1[0];
else if (oneobjectinaclass == "type2")
var firstvalueinarray = type2[0];
else if (oneobjectinaclass == "type3")
var firstvalueinanarray = type[0];
if (variableassignedtowhichevertype[1] == avaluetocompare)
{
numCorrect++;
alert('You\'re right! ' + numCorrect);
//the code I'm trying to get to accomplish this goes here
//var createanotherthingeachtimethisistrue = new Thing();
}
else {
alert('Wrong!');
}
}
答案 0 :(得分:1)
你的问题来自Scope的概念,在JavaScript中简单地说就是基于函数。
因此,为了解决您的问题,您可以通过键入
来指定当前范围之外的变量value = new Thing();
其中value是先前在当前函数之外的某些功能上下文中创建的变量。
要深入挖掘,我们需要了解JavaScript中的范围。有关详细信息,请参阅Scope (computer science),有关此问题的更多信息,Todd Motto的Everything you wanted to know about JavaScript scope会更详细地介绍它。
简而言之;每当我们输入函数时,“创建”范围,并且每当我们创建或访问变量时都使用该范围的环境框架。如果变量不可用,则使用外部上下文(或环境框架)。所以把它放在一个例子中。
示例1
var toy = 'stick';
function changeToy() {
var toy = 'ball';
}
changeToy();
与实施例2相比
var toy = 'stick';
function changeToy() {
toy = 'ball';
}
changeToy();
在示例1 中,将创建并分配新的变量,因为环境框架是函数changeToy
的本地框架。在示例2中,在changeToy
的环境框架中找不到变量玩具,因此使用外部上下文(在这种情况下为全局上下文);找到变量并重新分配。