Когда вы вызываете функции (в отличие от методов) в JavaScript, this
является глобальным объектом или undefined
в строгом режиме. Поэтому использование this
, как у вас выше, никогда не сработает.
Вы могли бы сделать это:
function events(index) {
arr[index] = arguments.callee;
alert("Hi");
}
но это сломает , если вы когда-нибудь будете использовать строгий режим (что на самом деле очень хорошая идея).
Вы также можете сделать это:
function events(index) {
allev[index] = this; // will work if you call with apply or call
}
Если и только если, вы когда-либо звоните events
так:
events.call(events, 12);
call
и apply
позволяют указать, что this
будет равно внутри вызова функции. Разница в том, что call
ожидает, что все аргументы будут перечислены, в то время как apply
ожидает, что все аргументы будут переданы в массиве. Таким образом, приведенное выше будет эквивалентно
events.apply(events, [12]);
DEMO