如果Value为true,则创建对象

时间:2017-12-08 13:18:31

标签: javascript class object instantiation

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

1 个答案:

答案 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的环境框架中找不到变量玩具,因此使用外部上下文(在这种情况下为全局上下文);找到变量并重新分配。