В чем отличие bind от call и apply?
Подскажите, пожалуйста. Буду крайне признателен, а то сам не разобрался.
|
Цитата:
Цитата:
|
Понял спасибо.
|
Цитата:
Заранее Вам благодарен! |
bind нужен скорее для того, чтобы не использовать постоянно call и сам по себе легко эмулируется.
Например можно написать так: id = document.getElementById.bind(document); А дальше просто использовать id('some-id');вместо постоянного id.call(document,'some-id'); Кстати в ie это магическим образом работает более чем в 2 раза быстрее чем просто document.getElementById('some-id'). 0_о |
Цитата:
|
Цитата:
http://jsperf.com/getelementbyid-vs-queryselector/33 |
jekahm, http://learn.javascript.ru/bind
|
Есть еще вопрос! Почему в примере ниже (я нашел его на этом сайте) для метода double bind используется, а для sum - нет?
function Example(x, y){ this.x = x; this.y = y; }; Example.prototype.sum = function(){ return this.x + this.y; }; Example.prototype.double = function(){ // Вместо for(var key in this) if(this.hasOwnProperty(key)) ... Object.keys( this ) // Получаем массив, к которому и применяем новые методы .forEach( function( key ){ // this "потерялся" бы, но... this[ key ] = this[ key ] * 2; // У функций тоже есть новое }.bind(this) ); return this; }; var example = new Example(3, 7); alert( example.sum() ); example.double(); alert( example.sum() ); |
Цитата:
Логичным был бы вопрос - зачем использовать функцию bind в методе double. Но ведь ответ дан в комментариях. Почитай про this в javascript (об этом уже много написано) чтобы не задавать такие вопросы. |
Часовой пояс GMT +3, время: 20:29. |