Encontré este fragmento de código en línea:
function cjsDetectionPlugin() { return { name: 'cjs-detection', moduleParsed({ id, meta: { commonjs: { isCommonJS } } }) { console.log(`File ${id} is CommonJS: ${isCommonJS}`); } }; } Entiendo que esto es JS perfectamente válido, pero simplemente no se calcula en mi cabeza. El método cjsDetectionPlugin devuelve un objeto, pero ¿qué sucede exactamente en la línea con moduleParsed ? ¿Esto se resuelve en algún tipo de nombre de propiedad?
Y mi mayor pregunta es cómo este objeto puede tener una subpropiedad que llame al código ( console.log... ).
¿Que está pasando aqui? ¿Dónde puedo encontrar la definición de esta sintaxis específica para aprender más sobre ella?
Se llama Destrucción de objetos , consulte la sección "Desempaquetar propiedades de objetos pasados como parámetro de función" en el enlace compartido
el siguiente está usando la destrucción de objetos en el parámetro de función:
function sayMyName({ name }) { console.log(`my name is ${name}`); }esto es equivalente a:
function sayMyName(person) { console.log(`my name is ${person.name}`); }Lo que tienes aquí es un MDN: declaración de método :
function cjsDetectionPlugin() { return { name: 'cjs-detection', moduleParsed() { console.log('some logs'); } }; } function moduleParsed(/*begin: parameters*/{ id, meta: { commonjs: { isCommonJS } } }/*end: parameters*/) { console.log(`File ${id} is CommonJS: ${isCommonJS}`); }