drop: (item, monitor) => addTaskToSprint(item.id, monitor, drop) length: 2 name: "drop" arguments: (...) caller: (...) [[FunctionLocation]]: SprintCard.jsx:45 [[Prototype]]: ƒ () [[Scopes]]: Scopes[3] 0: Closure (SprintCard) ItemType: "Task Card" addTaskToSprint: (id, monitor, dropTargetProps, task) => {…} drop: ƒ ()Mi respuesta api se ve así,
Necesito acceder a [[Ámbitos]] para poder obtener la variable ItemType
drop es una función, por lo que acceder al alcance de esta manera (spec.drop.scopes) no funcionará
cuando consola.log (spec.drop) muestra solo la declaración de la función
Entonces, ¿hay alguna forma de tener alcances de acceso?
[[Scopes]] no es parte del objeto, es una categoría que devtools usa para mostrar qué objetos de registro de entorno cierra una función. La función drop tiene acceso a ItemType , pero otro código no obtiene acceso a ItemType mediante drop a menos que drop proporcione ese acceso de alguna manera. En términos más generales, el código con acceso a una función no necesariamente tiene acceso a las cosas a las que tiene acceso la función (de hecho, a menudo no lo tiene).
Aquí hay un ejemplo más simple:
function counter() { let value = 0; const increment = () => ++value; return increment; } function example() { const increment = counter(); console.log(increment()); // Shows "1" console.log(increment()); // Shows "2" -- that is, the `increment` // function closes over `value` so it // can use it to return an incrementing // counter // There's no way for code here to directly access the `value` that // `increment` closes over. } example(); La función de increment tiene acceso a value , pero la función de example no, aunque tiene acceso a increment .