Так мне было интересно, что быстрее связывается или применяется? Есть ли конкретное доказательство (я сделал около часа, играя на jsperf, ответ ниже).Более быстрый способ заменить bind в javascript
ответ
http://jsperf.com/apply-verses-bind/3
Как вы можете видеть, я провел несколько ситуаций, но оказывается, что упаковка функции и вызов функции объема является самым быстрым (примерно 2 раза быстрее, чем bind
или apply
).
Для тех, кто слишком ленив, чтобы проверить jsperf, вот результаты.
var myObject = {
count: 0,
fn: function() {
this.count += 1;
}
};
var bindFn = myObject.fn.bind(myObject);
var applyFn = (function(fn, scope) {
return function() {
fn.apply(scope, []);
}
})(myObject.fn, myObject);
var unboundFn = myObject.fn;
var preBound = (function(fn, scope) {
return function() {
scope[fn]();
};
})('fn', myObject);
preBound
выигрывает примерно в 2 раза быстрее. Итак, я подумал о большом классе полезности.
return {
superBind: function(fn, scope) {
return function() {
scope[fn]();
}
}
};
И бум, супер привязывать :)
Итак ... Что это должно быть? Ответ на мгновенный вопрос, чтобы получить ответные точки или вы хотите, чтобы он был помечен как wiki сообщества? –
@LightStyle: Автоответчик разрешен. Но вопрос очень низок. Эти «быстрее» часто бессмысленны и очень часто относятся к реализации и версии. –
хорошо, так как я разрабатывал очень сложные приложения в javascript, я обнаружил, что функции 'bind' и' apply' используются в коде (особенно для обратных вызовов и наблюдаемых). Во-вторых, чтобы облегчить стиль, я не знал, что существует какой-либо другой способ. Я пошел задавать вопрос, решил провести исследование и нашел, что могу ответить сам. Поскольку это, по крайней мере, я считаю хорошим ответом на вопрос выше. Я сформулировал вопрос выше, чтобы быть простым и точным для ответа ниже. Если этого недостаточно, я могу это изменить. – Michael
- 1. subprocess.check_output более быстрый способ
- 2. заменить символы в файле (более быстрый метод)
- 3. Более быстрый способ создания TCombobox в Runtime
- 4. более быстрый способ нарисовать изображение
- 5. Есть ли более быстрый способ?
- 6. Более быстрый способ выполнения циклов
- 7. Есть ли более быстрый способ?
- 8. Более быстрый способ поиска списка?
- 9. Более быстрый способ запросить smartsheet?
- 10. Более быстрый способ генерации перестановок
- 11. переформатирование данных (более быстрый способ)
- 12. Более быстрый способ делать objectToArray
- 13. Более быстрый способ выполнить javascript-код в Java (sdk1.4)
- 14. Более быстрый способ для этого mysql_query
- 15. Быстрый способ заменить строку пар в файле
- 16. быстрый способ заменить строку в шаблоне
- 17. Самый быстрый способ заменить строку в PHP
- 18. Более быстрый способ тестирования состояния в MATLAB
- 19. Более быстрый способ заполнения таблицы в Django
- 20. Добавление строки в список - более быстрый способ?
- 21. Более быстрый способ изучения текста в AutoIt?
- 22. более быстрый способ запускать countifs в python
- 23. Более быстрый способ сжать папку в python
- 24. Более быстрый способ преобразования матриц в r?
- 25. Более быстрый способ инициализации массивов в Delphi
- 26. Inverse String.Replace - Более быстрый способ сделать это?
- 27. быстрый способ получить .domain.com в JavaScript
- 28. Более быстрый способ обновить множество значений
- 29. JavaScript: более быстрый способ создания и инициализации двумерного массива (матрицы)
- 30. Более быстрый foreach для IE
Что быстрее? Это две разные вещи! –
2 вещи. Его смешно, что у меня есть -1 на мой вопрос и +2 на мой ответ ... Вторая вещь: Общепринято хотеть установить область для функции. лучше или лучше? есть ли альтернативы? Это была моя цель. – Michael
'.apply()' и '.bind()' две разные вещи, хотя вы можете использовать '.apply()' как часть создания функции .bind() '-like. Возникающий вопрос имеет мало смысла. Я не знаю, почему вы ожидаете получить равные голоса по вашему вопросу и ответам, но ни один из них не подходит ... как говорят * «... для тех, кто слишком ленив, чтобы проверить jsperf ...» *, когда ответ должен быть таким, чтобы человек не нуждался в *, чтобы следовать ссылке, чтобы получить информацию. –