MyTetra Share
Делитесь знаниями!
Как переопределить this в вызываемой функции
Время создания: 24.05.2011 23:49
Раздел: Компьютер - Программирование - Java Script
Запись: xintrea/mytetra_syncro/master/base/0000003519/text.html на raw.github.com

Давайте напишем простую функцию, которая возвращает массив из трех элементов — текущего значения this и двух аргументов, переданных в функцию.

function makeArray(arg1, arg2){

return [ this, arg1, arg2 ];

}

Зачастую возникает необходимость переопределить значение this. Если вы помните, функции в JavaScript являются объектами. На практике это означает, что у функций есть предопределенные методы. apply() и call() — два из них. Они позволяют переопределять значение this:

var car = { year: 2008, model: 'Dodge Bailout' };

makeArray.apply( car, [ 'one', 'two' ] ); // => [ car, 'one', 'two' ]

makeArray.call( car, 'one', 'two' ); // => [ car, 'one', 'two' ]

Эти два метода очень похожи. Первый параметр переопределяет this. Различия между ними заключаются в последющих аргументах: Function.apply() принимает массив значений, которые будут переданы функции, а Function.call() принимает аргументы раздельно.

Другими словами, если требуется переопределить значение this, не копируя функцию в другой объект, можно использовать myFunction.apply( obj, ... ) или myFunction.call( obj, ... ).

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования