«Это история девушки, которая проплакала реку и утопила весь мир! И хотя на фотографиях она выглядит такой грустной, я просто обожаю ее, когда она улыбается!»
— Абсолютно от Nine Days
Просто дружеское напоминание улыбаться!
Точки и скобки. Они выглядят совершенно по-другому, но так ли это? Не совсем! И точки, и скобки используются для доступа к свойствам объектов JavaScript. Во многих случаях object.property и object["property"] взаимозаменяемы.
Пример
var ben= {favoriteFood: “Spinach”, favoriteAnimal: “Owl”} ben.favoriteFood === ben[“favoriteFood”]; //returns true
Вы можете представить, что точка волшебным образом превращается в полный синтаксис квадратных скобок ([“ ”]), окружающих вашу собственность. Это сокращенное обозначение в квадратных скобках.
Итак… если они одинаковы, почему существуют оба?
Хороший вопрос! Точки — это легко и просто. Я люблю использовать их всякий раз, когда я могу! Но иногда вы будете использовать переменную для доступа к свойствам. Это не слишком хорошо работает с точечной нотацией.
*В следующем примере будет использоваться цикл for…in. Если вашей реакцией на это было: «Какая петля?» вот синопсис. Циклы for…in обращаются к каждому свойству объекта, пока не получат доступ ко всем.*
Пример
//We will use Ben from above. for(var key in ben){ console.log(ben[key]); //This will work. console.log(ben.key); //This will not. }
Итак, если они одинаковы, почему один работает, а другой нет?
^^ Они не одинаковы! ^^
Это фундаментальное различие между двумя стилями ссылок на свойства. Точка превратится в полное [“ ”], что требует конкретного имени свойства. В примере у ben нет свойства с именем key. Но на первой итерации key = «favoriteFood», который полностью работает при передаче в ben[].
Короче говоря, точечная нотация требует фактического имени свойства, а скобочная нотация — нет.
Надеюсь, это помогло! Заходите, скоро появятся новые блоги по JavaScript!