访问JavaScript对象

时间:2011-12-23 10:15:33

标签: javascript

有人可以解释这段代码吗? 感谢。

 alert({foo:"test foo", bar:"test bar"}.bar); // "test bar"

9 个答案:

答案 0 :(得分:1)

  1. {foo:"test foo", bar:"test bar"}创建一个包含两个字段的新对象:foobar
  2. alert(obj.bar)输出此新创建对象的bar字段值

答案 1 :(得分:1)

javascript中的对象文字是某种关联数组。

是对:

  var a  = { 
     key1: 'value1',
     key2: 'value2',
     "key #3": 'value3'
    }

可以在值中包含任何类型的数据, 如果键包含特殊字符,空格或保留字,则键应为字符串。

可以通过点(如OOP中)访问a的值:

 a.key1 == 'value1';

但是如果key包含上面描述的特殊字符,那么你可以像访问关联数组一样访问值a;

a["key #3"] == 'value3'

然而,

a["key1"] ;

也是正确的

javascript中的每个声明/赋值都会返回对象本身或分别赋值,所以:

var a;
(a={ 
    key1: 'value1',
    key2: 'value2',
    "key #3": 'value3',
    key4: function(){
       //`this` refers to `a` variable - if function will be called directly from `a`  => a.key4() ; 
      alert(this["key #3");}
        }).key1  // gets 'value1'

({ key1:'value1' })['key1'];// gets 'value1' too

答案 2 :(得分:0)

在Javascript中,{}表示法定义了一个对象,在这种情况下你只需得到bar属性。它类似于任何OO语言的类;和以下代码类似:

var obj = {
 foo : 'Test Foo',
 bar : 'test bar' 
};

alert( obj.bar ); //Show the 'bar' property of obj.

声明显然会自行返回,因此您显示的语法是合法的。然而它是相当无用的,因为你不能对你刚刚定义的对象做任何事情。

答案 3 :(得分:0)

你有一个对象

有2个属性:foo,bar。

foo值是“test foo”

条形值是“测试条”

但是告诉我吧的价值。

{foo:“test foo”,bar:“test bar”}。bar

答案 4 :(得分:0)

在您的示例中,使用对象作为参数调用函数alert。该参数动态构造一个具有两个属性foobar的对象,然后访问bar属性,该属性返回要显示的alert函数的字符串。 / p>

答案 5 :(得分:0)

你有两位代码:

{foo:"test foo", bar:"test bar"}

这是一个对象文字:它定义了一个具有两个属性foobar的对象,每个属性都有一个字符串作为其值。

.bar

这是成员运算符:它从名为bar的对象中获取成员。

我无法想象这种编码风格的用例......

答案 6 :(得分:0)

JS创建对象并立即显示属性栏:) 可能会有所帮助:http://json.org/

答案 7 :(得分:0)

语法{foo:"test foo", bar:"test bar"}被称为Javascript Object Notation(JSON),它允许使用更多terser语法构造javascript对象:

var obj = function() { this.foo = "test foo"; this.bar = "test bar"; };
var instance = new obj();

因此,在上面的示例中,您将创建一个包含两个字段的javascript对象,然后立即访问bar字段。

答案 8 :(得分:0)

{foo:"test foo", bar:"test bar"}

这会创建一个包含两个属性foobar的新对象。如果您习惯使用Java或C#或C ++或类似的语言,那就像说

class FooAndBarObject {
  public string foo;
  public string bar;

  public FooAndBarObject(string foo, string bar) {
    this.foo = foo;
    this.bar = bar;
  }
}

new FooAndBarObject("test foo", "test bar");

所以,然后写{foo:"test foo", bar:"test bar"}.bar会返回bar属性的值,恰好是"test bar"

alert是一个显示传递给它的值的函数,因此它会向用户显示test bar