Javascript 如果值为true,则创建对象的新实例
根据比较用户输入值和随机值的if语句结果创建对象的新实例。我希望它创建一个对象的新实例,如果这是真的,并且每次比较结果为真时都这样做 object.create()是实现这一点的方法吗?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
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())代码>。再说一遍,我不确定这是否真的是你想要的。如果要“重置某些项”,则应分配第一个变量,而不是创建新的局部变量。