Применить () определение метода
Метод Apply () функции и метод вызова имеет одинаковую функцию, но разница в том, что полученные параметры различны.
Метод Apply () получает два параметра, один - это объект, а другой - массив параметров.
применить () функцию
1. используется для расширения объема функции
Пример:
var color = 'red'; var o = {color: 'blue'}; function showcolor () {console.log (this.color);} saycolor (); // "red" saycolor.apply (o); // "Синий"Здесь функция динамически связана с объектом o через метод Apply (). В настоящее время это указывает на объект O и получает результат «синий».
2. Объекты не должны иметь каких -либо взаимосвязи с методами.
Давайте приведем пример связи ниже, чтобы увидеть, как решить эту связь, применяя.
var color = 'red'; var o = {color: 'blue'}; function showcolor () {console.log (this.color);} o.saycolor = saycolor; o.saycolor (); // "Синий"Здесь функция сначала размещена в объекте O, а объект и метод тесно связаны вместе, а вызов метода должен пройти через объект O.
Это не так гибко, как использование методов Apply () и call ().
Refactor приведенный выше код, чтобы получить код в предыдущем примере.
var color = 'red'; var o = {color: 'blue'}; function showcolor () {console.log (this.color);} saycolor (); // "red" saycolor.apply (o); // "Синий"Здесь нет метода, связанного с объектом, но когда необходимо его использовать, используйте метод применения или вызов функции для динамического привязки его.
Нет связи между объектами и методами. Здесь также можно сделать с помощью метода Bind (), предоставленного ES5.
3. Реализация переноса параметра переменной параметра
Следующая функция для расчета среднего значения любого числа
средний (,); средний (); средний (,,,,,,); средний (,,,,,,); средний (,,,,,,,);););
Средняя функция является примером, называемым изменчивым параметром или функцией изменяемого элемента (количество элементов функции относится к его желаемому количеству параметров).
Конечно, эта функция также может быть записана в форме приемного массива.
Средний ofArray ([,,]); средний ofArray ([]); средний ofArray ([,,,,,,,,]); средний offarray ([,,,,,,,,]);
Функции, которые используют переменные параметры, более краткие и элегантные. Функции переменных параметров имеют удобный синтаксис, по крайней мере, позволяя вызывающему абоненту заранее знать, сколько параметров предоставляется.
Если у меня есть такой массив
var races = getAllScores ();
Как рассчитать среднее значение, используя среднюю функцию?
1. Версия функции переменной.
В настоящее время его можно использовать в сочетании с методом Apply (). Поскольку функция не использует ссылку на эту переменную, мы передаем нуль для первого параметра. Код заключается в следующем:
var -оценки = getAllScores (); средний. Apply (null, оценки);
2. Прямые параметры в форме массива
Здесь вы можете напрямую передать параметры массива.
var racous = getAllScores (); verageOfarray (оценки);
Я лично думаю, что обе из двух вышеупомянутых форм в порядке, но вторая проще. Знайте больше о методе, с которым можно легко справиться при столкновении с функциями, написанными другими без рефакторирования кода. Это преимущество еще больше.
4. Реализация передачи значения методов переменных параметров
Пример: буферный объект содержит метод приложения изменяемого параметра, который добавляется в массив состояний внутри функции.
var buffer = {состояние: [], adpend: function () {for (var i =, n = arguments.length; i <n; i ++) {this.state.push (arguments [i]);}}};В настоящее время метод добавления может принять любые несколько параметров.
buffer.append ('hello,'); buffer.append ('firtname', '', 'lastname', '!'); buffer.append ('newline');Форма, такой как
buffer.append (arg1, arg2, arg3, ...)
С помощью этого параметра метода применения мы можем указать вычисляемый массив для вызова метода добавления.
buffer.append.apply (buffer, getInputStrings ());
Примечание: буфер здесь важен. Если проходит другой объект, метод добавления попытается изменить свойство состояния неправильного объекта.
намекать
• Используйте метод применения, чтобы указать вычисляемую массив параметров, чтобы вызвать функцию с использованными параметрами
• Используйте первый параметр применения метода, чтобы предоставить приемник для метода переменной параметров
Приложение 1
средняя функция
Функция среднего () {var args = []. slice.call (аргументы); var sum = args.reduce (function (prev, cur) {return prev+cur;}); return parseint (sum/args.length,);}Средняя функция
Функция среднего числа (arr) {var sum = arr.reduce (function (prev, cur) {return prev+cur;}); return parseint (sum/arr.length,);}ES5 BIND () Метод
Этот метод создает экземпляр функции, значение которой связано с значением, передаваемым функции bind ().
Например
var color = 'red'; var o = {color: 'blue'}; function showcolor () {console.log (this.color);} var osaycolor = saycolor.bind (o); osaycolor (); // "Синий"Совместим с нижними версиями, см. Следующую версию:
if (! function.prototype.bind) {function.prototype.bind = function (OTHIS) {if (typeOf this! == 'function') {// ближайшая вещь для ECMascript // Внутренний IScallable FunctionThrow new TypeError ('function.prototype.bind - что пытается быть связанным. ), ftobind = this, fnop = function () {}, fbound = function () {return ftobind.apply (этот экземпляр fnop? This: Othis, aargs.concat (array.prototype.slice.call (аргументы));}; если (это. это. Прототип; } fbound.prototype = new fnop (); return fbound;};}