访问javascript对象中的属性

时间:2016-03-28 20:19:39

标签: javascript

我正在尝试访问对象中的属性并将其返回。

请注意,对象的名称可能会更改,因此使用{ "title_can_change":{ property: 1 } } 访问该名称将无效。

采取以下对象:

apiData:{
 "apiName":{
   price: 500
 }
}

如何返回'属性'?

的值

更多信息:

此对象是从搜索中返回的,该搜索包含来自多个API的结果数组。返回此对象以详细说明结果来自的API(搜索通过几个API)。

所以这更像是:

l_1, l_2, ..., l_n

" apiName"没有修复,更改为API的名称。所以它不能被" apiName'引用。在任何代码中。

6 个答案:

答案 0 :(得分:0)

如果此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'];
.....

OR

....
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'];
.....

答案 1 :(得分:0)

您可以创建一个函数来返回传递给它的任何对象的属性值:

var getProperty = function(obj) {
    return obj.property;
};

答案 2 :(得分:0)

如果你有一个对象并且想要访问它的第一个键的值,你可以使用这样的东西(脏例子):

var myObj = {
 "title_can_change"{
   property: 1
 }
}

myObj[Object.keys(myObj)[0]];

我回家帮忙。

答案 3 :(得分: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范例,并且是原型语言的优势,所以虽然它可能超出您的需求,我想我会在这里添加它作为答案......

答案 4 :(得分:0)

这里有一种猜测,因为这个问题仍然有些不清楚。我假设您要迭代名称未知的对象属性。

这可能是一个解决方案。

{{1}}

答案 5 :(得分:-6)

使用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;
    }
}