簡體   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