访问javascript对象中的属性

Access property within javascript object

本文关键字:属性 对象 javascript 访问      更新时间:2023-09-26

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

请注意,对象的名称可以更改,因此使用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;
    }
}