Привязка контекста. bind.
Я может немного переучился, но решил повторить bind и что-то не понял, откуда этот код:
function sayHi() {} var f = sayHi.bind( {name: "Вася"} ); document.write( f.name ); Берет вот эту строку: "bound sayHi". Прошу пояснить. |
Цитата:
Там вообще черт знает какие правила: <html> <body> <script> window.one = function(){} two = function(){} var three = function(){} foo = one.bind(window) bar = two.bind(window) baz = three.bind(window) console.log(foo.name, bar.name, baz.name) </script> </body> </html> выводит bound bound two bound three хотя, window.someVariable = someObject должно быть эквивалентно someVariable = someObject У дезигнеров жаваскрипта, по ходу, очередной приступ дезигна головного мозга, сука Причем, по сути, эквивалентный код <body> <script> window.one = new Function two = new Function var three = new Function foo = one.bind(window) bar = two.bind(window) baz = three.bind(window) console.log(foo.name, bar.name, baz.name) </script> </body> </html> Выводит совершенно другую хуйню bound anonymous bound anonymous bound anonymous Но тут хоть все логично, блеать,так оно и должно быть UPD разгадал тайну запила этих дегенератов. Когда создается с понтом "анонимная ф-ция", в выражениях типа myVar = function(){} или var myVar = function(){}, ей автоматом навешивается имя. Где тут логика, хз. <html> <body> <script> one = function(){} two = one console.log(one.name, two.name) // one one </script> </body> </html> ЗЫ тестил в хроме, другие реализации хз как себя ведут |
Часовой пояс GMT +3, время: 19:07. |