Просмотр полной версии : вызов ф-ции обработчика как метода объекта
Например, устанавливаем обработчик на событие click(юзается jQuery):
$('.button').on('click', muFunction)
Почему нельзя указать вместо обычной ф-ции muFunction, вызов метода у определенного объекта? Как реализовать то, что я описал? Заранее спасибо.
Как реализовать то, что я описал?
Как вариант...
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
var o={
test: function () {
alert('Ok!');
}
};
$(document).ready(function (){
$('button').click(o.test);
});
</script>
</head>
<body>
<button>Test</button>
</body>
</html>
Почему нельзя указать вместо обычной ф-ции muFunction, вызов метода у определенного объекта?
Т.ч. высказывание ложное. :)
можно и так
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<button>click</button>
<script>
function f() {
return function () {
alert("click");
}
}
$("button").on("click", f());
</script>
можно и так
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<button>click</button>
<script>
function f() {
return function () {
alert("click");
}
}
$("button").on("click", f());
</script>
развивая эту идею, можно сделать и вот так:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<button>click</button>
<script>
function f() {
return function y() {
return function z() {
return function () {
alert("click");
}
}
}
}
$("button").on("click", f()()());
</script>
но нахрена?!
keen, автор спросил
Почему нельзя указать вместо обычной ф-ции muFunction, вызов метода у определенного объекта?
Ему отвечают что есть разные варинты того, что можно указать. И не более того. :)
Яростный Меч
23.08.2013, 15:52
Почему нельзя указать вместо обычной ф-ции muFunction, вызов метода у определенного объекта? Как реализовать то, что я описал? Заранее спасибо.
как я понимаю, требуется вместо функции уметь передать связку (объект+метод), чтобы в методе объект был доступен через this?
$('.button').on('click', obj.myMethod.bind(obj))
если bind нету в Function.prototype, его можно добавить вручную.
Как?
искать по словам Function.prototype.bind
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot