Javascript : 如何获取实例名称?

Javascript : how to get the name of the instance?

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

foo = function()
{
...
}

然后我从 foo class :

创建一个名为 pear 的对象
pear = new foo();

然后我将 pear 对象放入数组中:

array_obj = [pear];

所以当我用 "for loop" 解析 array_obj 时,我想获取实例的名称,即 "pear" 字符串:

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

但它不起作用,因为 array_obj[i].name 没有 return "pear" 名称。

你有想法吗?提前谢谢你,诚挚的。

更改函数:

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

你的来电:

var pear = new foo("pear");

你不能这样做。 1 - 它不起作用,2 - 它是 "layer violation" 让对象知道引用它的变量名称的任何信息。

此外,变量名也为程序员提供了方便。它们可以通过程序员的选择进行更改,甚至可以通过缩小器或混淆器之类的东西自动更改。

因此,如果名称真的很重要,它要么需要成为对象本身的 属性(根据@Paulo 的回答在构造函数中传递),要么您需要维护一个 "hash" (又名 "map")将 "human readable names" 映射到单个对象:

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

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

你不能因为

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

这取决于您 return 从 foo() 函数中得到什么。我怀疑它会 return undefined 因为你没有在 foo()

中定义这样的 属性

您可以使用@Paulo 解决方案