2011-12-23 9 views

ответ

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

Это создает новый объект с двумя свойствами, foo и bar. Если вы привыкли к 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.

0

В Javascript нотация {} определяет объект, вы просто получаете свойство bar в этом случае. Он похож на класс на любом языке OO; и аналогичный следующему коду:

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

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

Декларация просто возвращает себя, очевидно, поэтому синтаксис, который вы показали, является законным. Однако это бесполезно, поскольку вы не можете ничего сделать с объектом, который вы только что определили.

0

У вас есть объект

с 2 объектами: foo, bar.

значение Foo является «тест Foo»

значение бар «тест-бар»

но покажите мне значение бара.

{Foo: "тест Foo", бар: "тест-бар"}. Бар

1
  1. {foo:"test foo", bar:"test bar"} создает новый объект с двумя полями: foo и bar
  2. alert(obj.bar) выводит значение bar поля этот вновь созданный объект
0

В вашем примере функция alert вызывается с объектом как его параметром. Параметр конструирует объект «на лету» с двумя свойствами: foo и bar, затем обращается к свойству bar, которое возвращает строку для отображаемой функции alert.

0

У вас есть два бита кода там:

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

Это литерал объекта: он определяет объект с двумя свойствами foo и bar, каждый из которых имеет строку в качестве значения.

.bar 

Это оператор член: он получает член от объекта, имя которого bar.

Я не могу представить себе потребительной случай для этого стиля кодирования ...

0

JS создает объект и сразу отображает свойство бар :) может быть полезным: http://json.org/

0

Синтаксис {foo:"test foo", bar:"test bar"} называются JavaScript Object Notation (JSON), и это позволяет Java-объект, который будет построен с использованием с более кратким синтаксисом, то:

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

Таким образом, в приведенном выше примере, вы создаете Java объект сценария с двумя полями, а затем немедленно получает доступ к полю bar.

1

Литерал объекта в javascript - это своего рода ассоциативный массив.

ли пары:

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

может содержать любой тип данных в значениях, Ключ должен быть строки, если они содержат специальные символы, пробелы или зарезервированные слова.

Доступ к значениям a может быть от точки (как в ООП):

a.key1 == 'value1'; 

Но если ключ содержит специальные символы, описанные выше, вы можете получить доступ к значению означает 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 
Смежные вопросы