аргументы компонента являются прокси-сервером, так что специальное поведение может переносить доступ к аргументам. Например, когда вы обращаетесь к одному из аргументов - только тогда аргумент будет "использован", а ваши геттеры / действия будут связаны с состоянием этого аргумента. Это дает преимущество в оптимизации отслеживания изменений по умолчанию, поэтому, если вы передаете 100 аргументов и используете только один или два из них в своем компоненте, вам не нужно оплачивать стоимость этих 100 аргументов, вызывающих обновления вашего компонента.
Это работает примерно так:
args = new Proxy(actualArgs, {
get(target, argName) {
consumeTag(tagFor(target, argName));
return target[argName];
}
});
Где обычно, если бы у вас был только ванильный объект, доступ к arg дал бы вам только значение. Этот прокси демонстрирует взаимодействие с системой отслеживания, так что теперь ваш компонент может быть запутан с обновлениями аргументов
Для получения дополнительной информации об автоматическом отслеживании @pzuraq подробно описывает здесь: https://www.pzuraq.com/how-autotracking-works/ (не обязательно автоматическое отслеживание в ember , но больше в целом )
Также документация по Proxy
, если интересно: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
Примечание: эта информация для Ember 3.13 +