Javascript 如果值为true,则创建对象的新实例

Javascript 如果值为true,则创建对象的新实例,javascript,class,object,instantiation,Javascript,Class,Object,Instantiation,根据比较用户输入值和随机值的if语句结果创建对象的新实例。我希望它创建一个对象的新实例,如果这是真的,并且每次比较结果为真时都这样做 object.create()是实现这一点的方法吗? var firstthing = new thing(); function createnewthing() { var entry = document.getElementById('theirentry').value; if (oneobjectinaclass == "typ

根据比较用户输入值和随机值的if语句结果创建对象的新实例。我希望它创建一个对象的新实例,如果这是真的,并且每次比较结果为真时都这样做

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!');
    }
}

您的问题源于作用域的概念,简单地说,在JavaScript中,作用域是基于函数的

因此,为了解决您的问题,您可以通过键入

value = new Thing();
其中value是在当前函数之外的某些函数上下文中先前创建的变量


为了深入研究,我们需要理解JavaScript中的作用域。有关更多详细信息,请参阅《托德座右铭》一书,了解更多详情

简而言之;每当我们输入一个函数时,就会“创建”一个作用域,每当我们创建或访问变量时,就会使用该作用域的环境框架。如果变量不可用,则使用外部上下文(或环境框架)。用一个例子来说

例1

var toy = 'stick';
function changeToy() {
   var toy = 'ball';
}
changeToy();
与示例2相比

var toy = 'stick';
function changeToy() {
   toy = 'ball';
}
changeToy();

在示例1中,将创建并分配一个新变量,因为环境框架是函数
changeToy
的本地框架。在示例2中,在
changeToy
的环境框架中找不到变量toy,因此使用外部上下文(本例中为全局上下文);在其中找到变量并重新分配。

是否尝试运行代码?如果你这样做了,那不管用吗?除了创建一个对象之外,你还想完成什么?它创建一个对象。我需要它在每次传递的值为真时创建一个新值。这运行了很多次。这只会创建CreateAnotherThingEachTimeThisTrue。这个名字是一个占位符,用来解释它应该做什么。在这种情况下,你能把它放在数组中吗?变量名不能描述您真正想要完成的任务。创建一个新对象只需键入
new Thing()
,但不清楚您是否尝试过此操作,以及为什么在这种情况下这对您来说不是一个令人满意的行为?创建一个带有for循环的数组,您正在说?我可以像那样动态地创建变量吗?什么东西[我]?每次用户输入一个值时,它都会通过此函数进行验证。我希望它在正确的时候创建一个新对象。基本上是重新启动要检查的东西。好吧,不。创建一个数组
var arr=[]
并向该数组添加项,
arr.push(newthing())。再说一遍,我不确定这是否真的是你想要的。如果要“重置某些项”,则应分配第一个变量,而不是创建新的局部变量。