какая между ними разница без учета синтаксиса, что может один чего не может другой, и как это связано с метапрограммированием, когда метапрограммирование - это изменение кода во время интерпретации.
vasIvas, я немного пользовался дескрипторами объекта, они помогают найстроить поля объекта, добавить флаги, геттеры, сеттеры, и я недавно узнал про объект Proxy который считается шагом в метапрограммирование, и может перехвачивать обращение к объекту, те же геттеры и сеттеры, и я немного не понимаю что когда лучше использовать, у них возможности почти одни и те же, и почему дескрипторы не считаются метапрограммированием а proxy им есть.
Я вроде как в курсе и что такое дескриптор и что такое Proxy, и я затрудняюсь ответить какая между ними разница, потому что это не связанные вещи. Дескриптор это просто объект, вообще любой объект, просто он каким-то определенным образом обрабатывается в некоторых методах Object.prototype. Отдельного термина "дескриптор" не существует.
Proxy это интерфейс не имеющий аналогов в JS. Как пример: с Proxy вы сможете поймать обращение к несуществующему свойству, а с геттером не сможете.
ЗЫ: вероятно вопрос можно перефразировать как "какая разница между геттером/сеттером и Proxy get/set?".
iamevg_, с сотворения спецификации ECMA-262. Требование наличия свойств value/get/set не превращает дескриптор в какой-то особый тип объекта, это всё тот же объект, просто в нем есть свойства value/get/set.