Определение методов и свойств напрямую или использование геттеров в js

#javascript #performance #getter

#javascript #Производительность #геттер

Вопрос:

Я разрабатываю некоторый код JS и у меня есть вопрос о производительности. Учтите, что у меня есть большой объект, который имеет много методов и свойств:

 const obj = {
  prop1: 'some value',
  ...
  prop1000: 'some value',
  method1: someMethod,
  ...
  method1000: someMethod,
}
  

первое решение
Я предполагаю, что если я использую геттеры для извлечения каждого поля (prop или метода), это поможет движку времени выполнения загружать меньше полей в память, когда в этом нет необходимости. Например:

 const obj1 = {
  get prop1() { return 'some value'; },
  ...
  get prop1000() { return 'some value'; },
  get method1() { return someMethod; },
  ...
  get method1000() { return someMethod; },
}
  

второе решение
и обратите внимание, что в этом сценарии мне не нужен никакой сеттер.
Поэтому, когда я использую второе решение при извлечении obj, никакие поля не извлекаются автоматически, пока я напрямую не вызову getter.
И теперь вопрос в том, действительно ли второе решение улучшает использование памяти и производительность во время выполнения, или это, по крайней мере, хорошая практика?

Комментарии:

1. Я думаю, что, поскольку большинство полей обрабатываются ссылкой, а не значением, сам ссылочный вызов будет работать как средство получения, которое вы имеете в виду, и не позволяет всему объекту входить и выходить из ОЗУ в любое время. А также, я думаю, консоль. сам журнал извлекает все поля объекта obj, и это не обязательно означает, что поля передаются с объектом куда угодно.

2. Я не уверен в производительности, но я знаю, что предоставление геттера равно «отложенному отображению» значений. Вы предоставляете пользователю функцию, в которой есть только инструкции. Затем пользователь использует его только тогда, когда ему нужно, и только тогда, когда он его использует — используются данные и память. В любом случае, это, безусловно, хорошая практика, потому что она позволяет вам решать, какие геттеры вы предоставляете, а какие нет, и пользователь должен использовать только то, что вы ему даете.