Обращение к свойству объекта a.field или a[field] [дубликат]

77
21 марта 2021, 06:10
На этот вопрос уже даны ответы здесь:
Помогите разобрать до конца код [закрыт] (3 ответа)
Закрыт 1 год назад.

Ребят, не пойму в чем ошибка. Есть задача на всем известном сайте для изучения JS по организации сортировки объектов в массиве через замыкания. В общем не пойму, почему при обращении к свойству объекта через точку return a.field > b.field ? 1 : -1; сортировка работает не верно, а через скобки return a[field] > b[field] ? 1 : -1; верно, хотя название свойства в одно слово без пробелов.

var users = [{ 
  name: "Вася", 
  surname: 'Иванов', 
  age: 20 
}, { 
  name: "Петя", 
  surname: 'Чапаев', 
  age: 25 
}, { 
  name: "Маша", 
  surname: 'Медведева', 
  age: 18 
}]; 
 
 
function byField(field){ 
  return function (a, b){ 
      return a[field] > b[field] ? 1 : -1; 
  } 
} 
 
users.sort(byField('name')); 
users.forEach(function(user) { 
  alert( user.name ); 
}); // Вася, Маша, Петя 
 
users.sort(byField('age')); 
users.forEach(function(user) { 
  alert( user.name ); 
}); // Маша, Вася, Петя

Answer 1

Как я вижу field это аргумент функции, он имеет некое значение.

Так вот, когда Вы пишете a[field] Вы обращаетесь к полю, которое называется так, какое значение находится в переменной field т.е. например к полю "name", а когда пишете a.field Вы обращаетесь к полю под названием "field"

READ ALSO
Кастомизация select

Кастомизация select

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

73
Как определить, есть ли в сообщение “-”

Как определить, есть ли в сообщение “-”

Я создаю бота в дискорде, и хочу что бы он в сообщение проверял есть ли там "-", сколько бы я не пытался у меня не получается это сделать

83
Аргументы функции JavaScript

Аргументы функции JavaScript

Программа рассчитывает калорийность При клике на чекбоксы срабатывает функция и пишет общую каллорийность и ценуЯ захотел реализовать...

94
Проверка чисел на четность

Проверка чисел на четность

Это можно сделать по разномуНо, все же, какой из нижеперечисленных способов получше с точки зрения читабельности и эффективности? Можете...

126