Как вывести объект вызова в JavaScript? - PullRequest
1 голос
/ 03 марта 2011

Когда я читал книгу на JavaScript, я прочитал следующее предложение.

"Объект вызова инициализируется свойством с именем arguments, которое ссылается на объект Arguments для функции"

мне разрешить выводить структуру (или значения?) объекта вызова в javascript, используя метод console.log или alert () ??

, когда люди говорят «объект вызова», это концепция илиобъект

Ответы [ 2 ]

3 голосов
/ 03 марта 2011

«Объект вызова» упоминается как «объект активации» в спецификациях ECMAScript, и к нему нельзя получить прямой доступ.Это позволяет механизмам ECMAScript / JavaScript реализовывать его оптимальным образом, поскольку им нужно только обеспечить его правильное поведение, даже если в нем нет буквально объекта со свойством аргумента, свойствами для переменных и т. Д.

Вотописание из спецификации (с добавленной формулой):

10.1.6 Объект активации

Когда элемент управления входит в контекст выполнения для кода функции, объект, называемыйОбъект активации создается и связывается с контекстом выполнения.Объект активации инициализируется свойством с аргументами имени и атрибутами {DontDelete}.Начальным значением этого свойства является объект аргументов, описанный ниже.

Объект активации затем используется в качестве объекта переменной для целей создания переменных.

АктивацияОбъект является чисто механизмом спецификации.Программа ECMAScript не может получить доступ к объекту активации. Она может получить доступ к членам объекта активации, но не к самому объекту активации.Когда операция вызова применяется к эталонному значению, базовый объект которого является объектом активации, в качестве значения this вызова используется значение null.

1 голос
/ 03 марта 2011

Я полагаю, что они ссылаются на объект, вызывающий метод / функцию.

На это может ссылаться ключевое слово this

<a onclick="foo()">click me</a>

function foo(){
  this.style.color='#cc0000';
  alert(arguments.length);
}

Этот код изменит цвет текста якоря на '# cc0000' и выдаст предупреждение 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...