Цитата:
|
monolithed,
Спасибо большое я тебя нашел) тперь тебе не скрыться) ответь на вопрос про поля в классах) а то я дальше делать не могу потому что не знаю что должно получиться((( http://javascript.ru/forum/misc/2589...-klassakh.html |
Не понял про bind, разве в bound-функция не передает все аргументы в исходную?
|
Нет, бинд только закрепляет контекст, вторым и последующими аргументами бинда будут закрепленные параметры функции.
если функция принимала 2 аргумента, а мы её забиндили к какому то контексту а так же забиндили какой то первый парамет, то потом передав забинденной функции ОДИН параметр, он будет ей трактоваться как второй. |
Ну и почему
log = console.log.bind(console) не должно работать? Новая bound-функция привязывается к console и может принимать столько же аргументов, сколько и console.log |
Octane,
Да, вы правы :) Естественно передаются все параметры, ведь это всего лишь обёртка привязанная к определённому контексту. Но в данном случае, нужно будет вручную передавать все возможные параметры которые придут в console.log. Не делать же так, в самом деле: var a = console.log.bind(console); console.log = function(){ a.apply(console /* Ну или видимо null можно */, arguments); } Смысл байнда тогда отпадает :) П.С. А можно извратиться так: var a = Function.prototype.apply.bind(console.log, console); console.log = function(){ a(arguments); } |
ааааааааа нипанимаю, все ведь работает без apply:
var log = console.log.bind(console); log(1,2,3,4) ![]() |
Octane,
Да работает, работает. Но вы видели пример Аквариума, что он там напридумывал? Это выглядело примерно так: var log = console.log.bind(console); console.log = function(a){ log(a); }; Так будет работать только один параметр. |
Некроморф хочет сказать что логер который я сделал для примера декоратора не достаточно полный. Так как не может принимать более одного параметра. За что ему и спасибо нашему капитану очевидность. Да, это ни ка не относится к декоратору, но он поставил смайлик что означало что он как бы к слову.
Я подумал что он не знает что лог нужно биндить к контексту консоли чтобы он работал. И обьяснил ему что в другом контексте работать не будет. Тут он показал что есть эплай, тогда за место того чтобы сказать ну и на хрена мне в примере декоратора эплай, я начал ему обьяснять что бинд работает быстрее, тогда он мне сказал что мой логер не полный. |
Цитата:
|
Часовой пояс GMT +3, время: 03:01. |