В чем отличие 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, время: 08:44. |