Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从不同对象访问属性?_Javascript_Oop_Object - Fatal编程技术网

Javascript 如何从不同对象访问属性?

Javascript 如何从不同对象访问属性?,javascript,oop,object,Javascript,Oop,Object,我不熟悉对象和OOP,我想知道,除了下面描述的方法外,我如何获得对象名称,以及是否还有其他方法可以访问对象的属性 好的,让我们举个例子: function giveMeSomeName() { console.log(this) }; giveMeSomeName(); 控制台将返回指向的对象,在本例中为“窗口” 控制台将返回指向的对象,在本例中为“对象” 在这种情况下,引用对象将是“myObject”。让我们假设我没有这些信息,我所拥有的只是控制台告诉我,这指向一个对象。有没有办法

我不熟悉对象和OOP,我想知道,除了下面描述的方法外,我如何获得对象名称,以及是否还有其他方法可以访问对象的属性

好的,让我们举个例子:

function giveMeSomeName() {
    console.log(this)
};

giveMeSomeName();
控制台将返回指向的对象,在本例中为“窗口”

控制台将返回指向的对象,在本例中为“对象”

  • 在这种情况下,引用对象将是“myObject”。让我们假设我没有这些信息,我所拥有的只是控制台告诉我,这指向一个对象。有没有办法获得它所指向的对象的确切名称(在本例中,我将查找“myObject”)
  • 让我们转到第二个问题,并将第二个代码段扩展一行(this.age=“20”):

    在本例中,如果我想在另一个上下文中访问或操作“age”,我将使用“myObject.age+=1”作为例子,它将对象“myObject”的属性“age”更改为21

  • 在语法方面,还有其他方法可以访问“age”吗?这个.age不起作用,因为它指向“窗口”,而不是“myObject”(其中“age”未定义)。正如你可能意识到的,这个问题与第一个问题相关
  • 并且是混凝土:

    我有以下代码。如何访问函数“enemyMovement()中的“敌人” (以下代码中的底线)


    谢谢:)

    当使用函数作为对象的基础时,您需要将函数用作“构造函数”,这意味着您需要使用
    new
    关键字对其进行实例化。执行此操作后,在函数中使用
    this
    关键字将导致单词绑定到实例化期间创建的对象变量。这就是创建实例属性的方式。因此:

    //此函数用于构造对象的不同实例
    //请注意,名称是以Pascal大小写的,以提醒其他人这一事实。
    函数名称(输入){
    this.myProp=输入;
    console.log(this.myProp)
    };
    //使用构造函数时,请使用'new'关键字生成实例
    //并将结果对象捕获到一个变量中,以使每个实例与
    //下一个。
    var myObjectInstance1=新给定的MesomeName(“foo”);
    
    var myObjectInstance2=新给定的MesomeName(“foo2”)一般来说,我建议您深入了解

    在您的特定情况下,尝试使用“enemyMovement”函数扩展“game”对象:

    game.enemyMovement = function() {
        this.enemy.position.x += 3;
    }
    
        ...
        this.enemyMovement();
    }
    
    并更改“更新”功能:

    game.enemyMovement = function() {
        this.enemy.position.x += 3;
    }
    
        ...
        this.enemyMovement();
    }
    

    我刚刚为我的“具体问题”找到了一个可能的解决方案,我会简单地称之为“Enemymovation(this.敌军)”,并以这种方式访问它。但有更好的解决办法吗?我的前两个问题仍然是:)我相信使用“game.敌军”可以解决这个问题…?JavaScript中的对象没有内在的“名称”。可能引用对象的变量有名称,其他对象的属性也有名称。同一个单一对象在任何时间点都可能被任意数量的变量或对象属性引用,并且事物也可能在任何时间发生变化;年龄可能是一个整数,你不想“201”岁,不是吗@GSazheniuk也有同样的想法,但不幸的是它将返回“未定义”。
        ...
        this.enemyMovement();
    }