У вас уже есть закрытие. Когда вызывается methodA
, доступ к a
будет работать нормально.
Свойства объекта отличаются от областей видимости. Вы используете области для реализации чего-то, что на других языках ведет себя как bit , как «закрытые члены», но a
является локальной переменной в родительской области, а не член myObjA
(частный или другой). Наличие функции типа methodA
для сохранения доступа к переменным в родительской области - это то, что означает «замыкание».
К каким областям вы можете получить доступ, исправлено: вы всегда можете обращаться к переменным в родительских областях, как бы вы ни вызывались, и вы не можете вызывать функцию с областями, отличными от тех, которые были у нее при определении.
Поскольку a
не является свойством this
, не имеет значения, что this
не сохраняется при перезвоне. Если вам do нужно получить правильный this
, тогда да, вам потребуется дополнительная работа, либо с использованием другого замыкания над myObjA
:
onclick= function() { myObjA.methodA(); };
или с использованием Функция # bind :
onclick= myObjA.methodA.bind(myObjA);