访问javascript对象中的属性
Access property within javascript object
我正在尝试访问对象中的属性并返回它。
请注意,对象的名称可以更改,因此使用title_can_change.property
访问它将不起作用。
以以下对象为例:
{
"title_can_change":{
property: 1
}
}
如何返回"property"的值?
更多信息:
该对象是从搜索返回的,该搜索包含来自多个API的结果数组。返回此对象以详细说明结果来自的API(搜索经过几个API)。
所以这更像是:
apiData:{
"apiName":{
price: 500
}
}
"apiName"不是固定的,更改为API的名称。因此,它不能被任何代码中的"apiName"引用。
您可以创建一个函数来返回传递给它的任何对象的属性值:
var getProperty = function(obj) {
return obj.property;
};
如果你有一个对象,并且你想访问它的第一个键的值,你可以使用这样的东西(肮脏的例子):
var myObj = {
"title_can_change"{
property: 1
}
}
myObj[Object.keys(myObj)[0]];
我回家这有帮助。
所以我想我知道你想要什么,这里有一个低级别的解决方案,它可能会证明很有价值,并向你展示一些关于该语言的巧妙之处。
https://jsfiddle.net/s10pg3sh/1/
function CLASS(property) {
// Set the property on the class
this.property = property || null;
}
// Add a getter for that property to the prototype
CLASS.prototype.getProperty = function() {
return this['property'];
}
var obj = new CLASS(9);
alert(obj.getProperty());
您在上面所做的是为您的新变量创建一个"类"。当您使用new
关键字创建对象时,您仍然可以获得正常的JS对象(无论如何,一切都是对象),但您可以使用getProperty
方法。原型上的这一点确保了您创建的任何new CLASS
变量都将具有该方法。您可以更改变量名,并且通过访问实例(变量)始终可以访问该属性。这是一个非常常见的OO范式,也是原型语言的优势,所以虽然它可能超出了您的需求,但我想我会在这里添加它作为答案。。。
如果此object
是全局的,则可以使用window['title_can_change']['property']
。如果它只是另一个对象的另一个属性(称为another_one),则可以使用another_one['title_can_change']['property']
访问它。
此外:您可以有一个变量(让我们称之为title_name
)来简化调用:
....
var title_name = "title_can_change";
var myObj = window[title_name]['property'];
title_name = "title_has_changed";
var anotherObj = window[title_name]['property'];
.....
或
....
var title_name = "title_can_change";
var myObj = another_one[title_name]['property'];
title_name = "title_has_changed";
var anotherObj = another_one[title_name]['property'];
.....
这是一种猜测,因为这个问题还有些不清楚。我假设您想要对名称未知的对象属性进行迭代。
这可能是一个解决方案。
for (var property in object) {
if (object.hasOwnProperty(property)) {
// check objects properties for existence
// do whatever you want to do
}
}
使用for...in
迭代对象的键,并检查内部对象是否包含属性
var o = {
"title_can_change":{
property: 1
}
};
for (var k in o) {
if (o.hasOwnProperty(k) && o[k].property) {
return o[k].property;
}
}
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象