|
apply и call. В чём отличия?
Читал стандарт языка, но ответа не нашел... Заметил, только что в call можно передавать много аргументов... Если есть ещё какие-нибудь отличия - напишите пжлст пример, где их можно посмотреть. Спс:)
|
А и ещё один вопрос - чтобы не плодить тем... Не могу найти описание хитрой конструкции:
var i=(function(){...})();
точно помню, что где-то было... Нужно именно описание, а не примеры... |
Цитата:
function sum(a,b) {
this.c = a + b
}
var obj = {}
sum.call(obj, 1,2)
// или
sum.apply(obj, [1,2])
alert(obj.c) // => 3
Цитата:
http://javascript.ru/forum/misc/4071...jj-vopros.html |
Цитата:
Цитата:
Цитата:
Цитата:
Но теперь я спокоен:) |
Получается, для того, чтобы выполнить JS-код не засрав при этом window можно использовать так:
(function(){...})()
Будем иметь ввиду... Углубляться, думаю, не стоит - работает и хорошо:) |
Цитата:
если ты будешь внутри объявлять переменные или функции без var, то все равно засрешь |
Цитата:
У меня вот ещё какой вопрос: Например, есть такой код:
function addClick(){
var i='New var';
ele.onclick=function(){
alert(i);
}
}
Тут обычное замыкание и при каждом вызове addClick будет создаваться функция-обработчик. Так?! А что изменит такой код:
function addClick(){
var i='New var';
ele.onclick=(function(){
return function(){alert(i)}
})();
}
Т.е. тут тоже замыкание, но я так понимаю, анонимная функция не будет клонировацо, т.к. отчищается после вызова... Мне самое главное понять, что остаёться в памяти... И ещё... В чём отличия записей:
var f=function(){}
и
var f=(function(){});
Сори, если пишу глупости:) |
Цитата:
Цитата:
|
Аха, понятно...
Цитата:
Вот пытаюсь писать "грамотные" скрипты... Не нравятся замыкания... Вот разбираюсь... |
Ещё вопрос:
такой вариант оставит жить [[scope]] внешней функции:
function(a,b){
var f=new Function(a,b,'return a+b');
}
?! Если да, то как этого избежать?! |
| Часовой пояс GMT +3, время: 10:59. |
|