假设我有一个JSON文档/ JavaScript对象,如下所示:
var animal = {
"squirrel": "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae."
}
在JavaScript中,会发生这种情况:
console.log(animal.squirrel) //Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae
假设我想将rank
对象添加到:
var animal = {
"squirrel": {
"rank": {
"Kingdom": "Animalia",
"Phylum": "Chordata",
"Class": "Mammalia",
"Order": "Rodentia",
"Suborder": "Sciuromorpha",
"Family": "Sciuridae"
}
}
}
排名可以这样访问:
animal.squirrel.rank
但我仍然希望animal.squirrel
对象的顶级是包含上述句子的字符串。
这可能吗?
答案 0 :(得分:5)
JSON不可能。但是,在JavaScript中,您可以执行一些操作。您可以提供在将对象转换为字符串时使用的toString
方法:
var animal = {
"squirrel": {
"rank": {
"Kingdom": "Animalia",
"Phylum": "Chordata",
"Class": "Mammalia",
"Order": "Rodentia",
"Suborder": "Sciuromorpha",
"Family": "Sciuridae"
},
toString: function() {
return "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.";
}
}
};
您还可以使用String
对象:
var animal = {
squirrel: new String("Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.")
};
animal.squirrel.rank = {
"Kingdom": "Animalia",
"Phylum": "Chordata",
"Class": "Mammalia",
"Order": "Rodentia",
"Suborder": "Sciuromorpha",
"Family": "Sciuridae"
};
后者的行为更像是一个字符串,但是它使用了一个String
对象,这有时令人沮丧,而且通常是不好的做法。
答案 1 :(得分:1)
正如其他人所说,这在任何对象上下文中都是不可能的,因此您需要将对象作为 on / in 对象处理。
var animal = {
"squirrel": {
"info": "Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae.",
"rank": {
...
}
}
}
而且,我认为无关,你可以设置快速访问器以实现共性。
function getAnimalInfo(animalName) {
if (!animal[animalName]) return "No info for: " + animalName;
return animal[animalName].info;
}
所以,
console.log(getAnimalInfo("squirrel")); //Squirrels belong to a large family of small or medium-sized rodents called the Sciuridae