繁体   English   中英

如何访问JavaScript对象的属性?

[英]How to access the properties of a JavaScript object?

在查看javascript编码时,我看到了

var detailInf = {
  "hTitle":"Results",
  "hMark":"98"
};

这个js编码背后的概念是什么。 对变量发出警报时,其显示为“ [object Object]”。 所以这是一个对象,然后我们如何访问变量并显示该对象的数据。

尝试这样做:

alert(detailInf['hTitle']);
alert(detailInf.hTitle);

两者都会警告“结果”-这是一个Javascript对象,可以用作字典。

必读: 对象为关联数组

作为一个脚注,您在弄乱Javascript时应该真的得到Firebug 然后,您可以只是console.log(detailInf); 这样您就可以在控制台中很好地映射对象的显示。

就像存在数组文字一样,JavaScript对象的这种形式称为对象文字。 例如,以下两个数组声明是相同的:

var a = [1, 2, 3];          // array literal
var b = new Array(1, 2, 3); // using the Array constructor

就像上面一样,可以用多种方式声明一个对象。 其中之一是对象文字,您可以在其中声明属性以及对象:

var o = {property: "value"}; // object literal

等效于:

var o = new Object; // using the Object constructor
o.property = "value";

对象也可以从构造函数创建。 像这样:

var Foo = function() {
    this.property = "value";
};

var o = new Foo;

添加方式

正如我不久前在评论中所说,声明JavaScript对象的这种形式不是JSON格式。 JSON是一种数据格式,不允许将函数用作值。 这意味着以下是有效的JavaScript对象文字,但不是有效的JSON格式:

var user = {
    age : 16,

    // this is a method
    isAdult : function() {
        // the object is referenced by the special variable: this
        return this.age >= 18;
    }
};

同样,属性名称不必用引号引起来。 但是,这在JSON中是必需的。 在JavaScript中,我们将它们放在方括号中,其中属性名称是保留字,例如classwhile和其他。 因此,以下内容也等效:

var o = {
    property : "value",
};

var o = {
    "property" : "value",
};

此外,键也可以是数字:

var a = {
    0 : "foo",
    1 : "bar",
    2 : "abz"
};

alert(a[1]); // bar

类数组对象

现在,如果上面的对象也具有length属性,它将是一个类似于object的数组:

var arrayLike = {
    0 : "foo",
    1 : "bar",
    2 : "baz",

    length : 3
};

类数组意味着可以使用普通迭代构造(for,while)轻松地对其进行迭代。 但是,不能在其上应用数组方法。 就像array.slice()。 但这是另一个话题。

方括号符号

正如Paolo Bergantino所说,您可以使用点符号和方括号符号来访问对象的属性。 例如:

var o = {
    property : "value"
};

o.property;
o["property"];

您什么时候要使用另一个? 人们在动态确定属性名称时使用方括号表示法,如下所示:

var getProperty = function(object, property) {
    return object[property];
};

或者,当属性名称是JavaScript保留字时,例如while

object["while"];
object.while; // error

那是 JSON格式的对象 那是一个javascript对象文字 基本上, :的左边的位是属性名称,右边的​​位是属性值。 因此,您所拥有的是一个名为detailInf的变量,它具有两个属性hTitlehMark hTitle的值是Results, hMark的值是98。

var detailInf = { "hTitle":"Results", "hMark":"98"};
alert(detailInf.hTitle); //should alert "Results"
alert(detailInf.hMark); //should alert "98

编辑 Paolo的答案更好:-)

正如Dan F所说,这是JSON格式的对象。 要遍历对象的所有属性,可以执行以下操作:

for (var i in foo) {
    alert('foo[' + i + ']: ' + foo[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM