如何访问JavaScript对象的属性?

如何访问JavaScript对象的属性?,javascript,scripting,Javascript,Scripting,在查看javascript编码时,我看到了这一点 var detailInf = { "hTitle":"Results", "hMark":"98" }; 这个js编码背后的概念是什么。为变量发出警报时,其显示为“[object]”。这是一个对象,那么我们如何访问变量并显示来自该对象的数据。尝试这样做: alert(detailInf['hTitle']); alert(detailInf.hTitle); 两者都会提醒“结果”——这是一个Javascript对象,可以用作各种字典

在查看javascript编码时,我看到了这一点

var detailInf = {
  "hTitle":"Results",
  "hMark":"98"
};
这个js编码背后的概念是什么。为变量发出警报时,其显示为“[object]”。这是一个对象,那么我们如何访问变量并显示来自该对象的数据。

尝试这样做:

alert(detailInf['hTitle']);
alert(detailInf.hTitle);
两者都会提醒“结果”——这是一个Javascript对象,可以用作各种字典

要求阅读:

作为一个脚注,当你在使用Javascript时,你真的应该明白。然后您就可以
console.log(detailInf),您将在控制台中获得对象的良好映射显示。

这是一个格式为的对象。这是一个好主意。基本上,
左边的位是属性名,右边的位是属性值。因此,这里有一个名为
detailInf
的变量,它有两个属性,
hTitle
hMark
hTitle
的值是结果,
hMark
的值是98

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

EditPaolo的答案更好:-)

正如Dan F所说,这是一个JSON格式的对象。要循环浏览对象的所有属性,可以执行以下操作:

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

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

var a = [1, 2, 3];          // array literal
var b = new Array(1, 2, 3); // using the Array constructor
如上所述,一个对象可以用多种方式声明。其中之一是object literal,您可以在其中声明属性和对象:

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中,我们将它们括在括号中,其中属性名是保留字,如
class
while
等。因此,以下内容也是等效的:

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

var o = {
    "property" : "value",
};
此外,键也可以是数字:

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

alert(a[1]); // bar
类数组对象 现在,如果上述对象还具有
length
属性,则它将是一个类似数组的对象:

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

    length : 3
};
类数组意味着它可以很容易地用普通的迭代构造进行迭代(例如,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

+1.Paolo的可能更好,但这是一个正确而直截了当的答案。虽然JSON是从这个JavaScript构造中获得灵感的,但它不是JSON格式的对象。它是一个对象文本。就像它们是数组文本、字符串文本等。区别在于JSON不允许函数作为值,因为它是一种数据格式。对象文字确实允许函数作为值。请注意,如果您想使用具有保留字属性的构造函数,这可以正常工作:
函数myObj(){this[”while“]=10;}obj1=new myObj();console.log(obj1[“while”])//输出10