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 解决方案
我创建了一个名为 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 解决方案