Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   событие объекта (https://javascript.ru/forum/misc/27183-sobytie-obekta.html)

Gozar 04.04.2012 21:25

событие объекта
 
Есть строение, вроде верно описал:

var Animal = function (){
 this.x = 0;
};
Animal.prototype.start = function (x) {
 this.x = x;
}
Animal.prototype.stop = function (x) {
 this.x = x;
}
Animal.protorype.mouseDown = function () {

}
//... вешаем обработчики клика и т.д.
// белка стартует по клику мыши

var belka = new Animal();


Можно ли повесить кроссбраузерно на белку обработчик события чтобы узнавать this.x, кроме watch. Или каким-то образом расширить mouseDown не трогая исходный код Animal?

melky 04.04.2012 22:17

может быть, setter ?

Раед 04.04.2012 22:43

Цитата:

Сообщение от Gozar
чтобы узнавать this.x

а когда именно вам нужно его узнавать

Gozar 04.04.2012 22:44

Цитата:

Сообщение от melky
может быть, setter ?

я и так могу в любой момент вызвать belka.x.

Цитата:

Сообщение от Раед (Сообщение 167138)
а когда именно вам нужно его узнавать

А вот это правильный вопрос. Когда он измениться. А измениться он когда сработает Animal.prototype.mouseDown.

Раед 04.04.2012 23:16

Может как-то так?
function dekor() {
var back = Animal.prototype.mouseDown;
Animal.prototype.mouseDown = function() {
//чё-то делаете
back()
//чё-то делаете
}
}
dekor()

Gozar 04.04.2012 23:31

Цитата:

Сообщение от Раед (Сообщение 167147)
Может как-то так?

Ась? Ты же мне mouseDown затёр.
начнем с места:
var belka = new Animal();

Дальше пиши что хочешь, до этого момента писать ничего нельзя.

nerv_ 04.04.2012 23:56

Цитата:

Сообщение от melky
может быть, setter ?

скорее геттер)

Gozar, очередная задачка на слом мозга) Признаться, не совсем понял, зачем
Цитата:

Сообщение от Gozar
узнавать this.x

если
Цитата:

Сообщение от Gozar
я и так могу в любой момент вызвать belka.x.


Вариант "подмены" метода belka.mouseDown не рассматривается?
belka.mouseDownDown = function () {
	belka.mouseDown();
	alert( belka.x );
};

Gozar 05.04.2012 00:30

Цитата:

Сообщение от nerv_ (Сообщение 167161)
Вариант "подмены" метода belka.mouseDown не рассматривается?

Нет.

Никаких геттеров и сеттеров.

Нужно выполнить функцию(одну или десять) по событию Animal.prototype.mouseDown

Gozar 05.04.2012 00:37

Когда мы делаем var belka = new Animal();
Белка оживает. Мы не знаем когда она побежит или остановиться. Но нам также нельзя вешать отлов событий на DOM.

Мне тут уже подсказали что простым способом это вроде сделать нельзя. Так что можно особо голову не ломать.

Octane 05.04.2012 01:07

Proxy в ближайшем будущем)


Часовой пояс GMT +3, время: 14:51.