我创建了一个名为Location的对象:
function Location(street,city,postal,phone,fax, lat, lon, distance){
this.street = street;
this.city = city;
this.postal = postal;
this.phone = phone;
this.fax = fax;
this.lat = lat;
this.lon = lon;
this.distance = distance;
}
然后构建每个对象:
example1 = new Locaiton('value', 'value', etc)
example2 etc etc
然后将对象存储在数组
中var cities = [example1, example2]
我尝试使用cities[0].constructor.name
,但这只是打印出位置。
如何打印“example1”以便我可以将它与if语句中的匹配元素id进行比较?
答案 0 :(得分:3)
example1是对Location对象的引用,JavaScript没有做你想做的事情的概念。
如果你真的需要这个名字,我会把它存放在你的对象上。
答案 1 :(得分:3)
对象不能对引用它们的变量进行任何反向引用。考虑一下:
var example1 = new Location(...);
var example2 = example1;
现在有一个由两个变量命名的位置,您希望" name"是吗?
答案 2 :(得分:0)
我建议您将这组位置存储为数组,然后将其存储为对象。您似乎正在尝试将城市名称与位置数据结合使用。
您可以为城市使用这样的数据结构:
var cities = {
"london": example1,
"lisbon": example2
}
然后你可以这样做:
cities.london.name
您必须在位置功能定义的末尾添加return this
。
答案 3 :(得分:0)
你无法做你想做的事。 JavaScript中的对象通常通过引用而不是值来使用。例如,如果你使用了:
var ex1 = new Location();
var ex2 = ex1;
var ex3 = ex1;
然后,所有这三个变量(ex1
,ex2
和ex3
)都指的是完全相同的对象。即使语言试图允许,对象也无法选择一个。
答案 4 :(得分:0)
您可以将对象存储在另一个动态对象中,然后使用“变量名称”作为键,但我并不是百分之百确定这会给您带来多少收益。方法是:
var examples = {};
examples["example1"] = new Location('value', 'value', etc);
examples["example2"] = etc etc
此时,您将能够访问与当前对象关联的密钥。问题是,您必须能够访问密钥才能访问该对象,因此,就像我说的那样,我不确定它能为您带来多少钱。 。
注意: Chris Alexander和Jay建议采用类似方法。 。
答案 5 :(得分:0)
您希望它打印出它出现的变量的名称。这实际上是不可能的。
如果您需要这样做,您有几个选择。两个最佳选择可能是:
1)在Location中添加某种名称功能。然后添加一个返回字符串的“toString()”函数。然后,如果你在需要将它转换为字符串的地方使用它,它将使用toString的输出。
2)不要将它们存储在数组中,而是将它们存储在一个对象中,其中键是您想要的名称。然后你可以改用密钥。
var locations = {
example1: new Location(),
example2: new Location()
}
for (var name in locations) { console.log(name); } // logs "example1" and "example2"