2016-06-23 3 views
0

Мы создаем объект в JavaScript ...Когда мы используем точечную нотацию в javascript?

var myObj = { 
    name1: 'abc', 
    place1: 'xyz', 

name2: 'mno', 
place2: 'uvw', 

}; 

Теперь, когда мы пытаемся получить доступ к Place1, как мы должны это делать?

myObj.place1 or myObj[place1] 
+0

'myObj [место1]' не будет работать, если не будет инициализированная переменная с именем 'place1' – gurvinder372

+1

Второй один должен быть myObj [ "Place1"]. Это обозначение, как вы хотите его использовать. – nikhil

ответ

0

Есть сценарии, в которых вы не можете использовать "объект-точка-атрибут": Например:

var obj={ 
    "hello world": 1, 
    "hello-world":2 
} 

obj.hello world //syntax error 
obj.hello-world //this is understood as (obj.hello) - world, a subtraction 

Таким образом, единственный способ, чтобы получить эти атрибуты использует

obj["hello world"] 
obj["hello-world"] 

В целом использование точки более безопасно, потому что любая IDE может проверить, был ли уже создан атрибут и может ли он выводиться, если тип верен, поэтому моя рекомендация - использовать объектно-точка-нотацию un меньше вы не можете.

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

var map={}; 
function addUser(username,userId) { 
    map[userId]=username; 
} 

function getUserName(userId) { 
    return map[userId] 
} 

Возвращаясь к вашему примеру:

var myObj = { 
    name1: 'abc', 
    place1: 'xyz', 

name2: 'mno', 
place2: 'uvw', 

}; 

рекомендуемый способ, чтобы получить значение является:

myObj.place2 

Но вы можете использовать

myObj["place2"] 
+0

, пожалуйста, напишите мне синтаксис с помощью моего кода, как мне получить доступ к place2? –

1

myObj.place1 будет работать напрямую, myObj["place1"] также будет работать непосредственно.

, но если вы хотите использовать myObj[place1] ... здесь place1 рассматривается как значение из переменной, чтобы сделать это использование работы ..

var myObj = { 
name1: 'abc', 
place1: 'xyz', 
name2: 'mno', 
place2: 'uvw', 
}; 

var Place1 = "place1"; 
myObj[Place1] 

мы используем «» точечная нотация, когда мы хотим получить доступ к значению объекта JS через свойство

0

Вы можете использовать точечную нотацию до тех пор, как это следует ниже правила:

свойство должно иметь действительный идентификатор JavaScript, т.е. последовательность алфавитно-цифровых символов , также включая знак подчеркивания («_») и знак доллара («$»), который не может начинаться с числа. Например, объект. $ 1 действителен, а object.1 - нет.

Вы также можете использовать номер для ключа. Но убедитесь, что вы используете скобку Notation как в объекте [1] вместо объекта.1 (это вызовет ошибку).

http://javascriptissexy.com/javascript-objects-in-detail/

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors

Смежные вопросы