Javascript:如何获取实例的名称?

时间:2015-11-27 15:04:53

标签: javascript object instance

我创建了一个名为foo的类:

foo = function()
{
...
}

然后我从foo类创建一个名为pear的对象:

pear = new foo();

然后我把梨对象放在数组中:

array_obj = [pear];

因此,当我通过" for循环"解析array_obj时,我想得到实例的名称,即" pear" string:

for(var i = 0; i < array_obj.length; i++)
{
    console.log(array_obj[i].name);
} 

但它不起作用,因为array_obj[i].name没有返回&#34; pear&#34;名。

你有个主意吗?诚挚地谢谢你们。

3 个答案:

答案 0 :(得分:4)

更改您的功能:

<?php 
  if(isset($_POST['submit'])){ 
    if(isset($_GET['go'])){ 
      if(preg_match("/^[  a-zA-Z]+/", $_POST['name'])){ 
        $name=$_POST['name']; 
        //connect  to the database 
        $db=mysql_connect  ("host", "username",  "password") or die ('I cannot connect to the database  because: ' . mysql_error()); 
        //-select  the database to use 
        $mydb=mysql_select_db("database_name"); 
        //-query  the database table 
        $sql="SELECT  movie_id, movie_title, movie_director, movie_lead_actor, movie_YOR, movie_img FROM sci_fi_movies WHERE movie_title LIKE '%" . $name .  "%' OR movie_director LIKE '%" . $name ."%' OR movie_lead_actor LIKE '%" . $name ."%'"; 
        //-run  the query against the mysql query function 
        $result=mysql_query($sql); 
        //-create  while loop and loop through result set 
          while($row=mysql_fetch_array($result)){ 
              $Title      =$row['movie_title']; 
              $Director   =$row['movie_director'];
              $Actor      =$row['movie_lead_actor'];
              $Year       =$row['movie_YOR'];
              $Image      =$row['movie_img'];
              $ID         =$row['movie_id']; 
        //-display the result of the array 
        echo "<li>";
        echo "<h4>Title</h4><p>$Title</p>";
        echo "<h4>Director</h4><p>$Director</p>";
        echo "<h4>Lead Actor</h4><p>$Actor</p>";
        echo "<h4>Year of Release</h4><p>$Year</p>";
        echo "<img src=\"$Image\"></img>";
        echo "</li>";
      } 
    } else{ 
        echo  "<p>Please enter a search query</p>"; 
    } 
  } 
} 
?>

你的电话:

foo = function(name)
{
   this.name = name;
}

答案 1 :(得分:3)

你不能这样做。 1 - 它不起作用,2 - 对象是一个“层违例”,它知道引用它的变量名称的任何信息。

此外,变量名称对程序员来说也很方便。它们可以通过程序员选择进行更改,甚至可以通过缩小器或混淆器等自动更改。

如果名称真的很重要,它要么成为对象本身的属性(在构造函数中传递,按@Paul的回答),要么需要维护映射的“哈希”(也称为“地图”)单个对象的“人类可读名称”:

var map_obj = { pear: new foo() };

然后,您可以迭代该映射的键(Object.keys(map_obj))以按名称查找每个对象。但是在这种情况下,每个名称必须是唯一的 - 地图不能包含重复的键。

答案 2 :(得分:2)

你不能因为

array_obj[i].name == pear.name == (new foo()).name

这取决于你从foo()函数返回的内容。我怀疑它会返回undefined,因为你没有在foo()

中定义这样的属性

您可以使用@Paulo解决方案

相关问题