Jak uniknąć „tego” odnoszącego się do elementu DOM i odnosić się do obiektu

Mam problem, że nie mogę się obejść.

Kontekst jest następujący: Chcę mieć łańcuch dziedziczenia, a metoda obiektów należących do tego dziedziczenia musi być procedurą obsługi zdarzeń, a jednocześnie być w stanie dotrzeć do właściwości obiektu.

Próbuję napisać JavaScript bez „nowego” słowa i zamiast tego użyć Object.create () z pewną hierarchią dziedziczenia. Więc najpierw to podejście.

Tak więc mam projekt reszty moich obiektów (myProto), a następnie tworzę obiekty za pomocą Object.create (tak, że nie ma zamknięcia, w którym mogę wykonać sztuczkę przypisywaniathis dothat lubself). Teraz, gdy używam metody tego obiektu do obsługi, na przykład, zdarzenia kliknięcia w div,this oczywiście będzie odnosić się do obiektu DOM i tracę możliwość dostępu do właściwości mojego obiektu.

var myProto = {
    init: function (name, value) {
        this.name = name;
        this.value = value;

        return this;
    },
    someHandler: function (e) {
        // Normally I would use this instead of e.target...

        e.target.innerHTML = this.name + this.value; // This does not refer to the object.
    }
};

var myObject = Object.create(myProto).init('myName', 'myValue');
document.getElementById('myDiv').onclick = myObject.someHandler;

Oto skrzypce:http://jsfiddle.net/pgPHM/

A teraz podejście „klasyczne”: Gdybym używał nowej formy Konstruktora, łatwo byłoby przypisać to do zamknięcia, a następnie uzyskać do niego dostęp, ale istnieje problem, że funkcje w Constructor.prototype

var Constructor = function (name, value) {
    var self = this;

    self.name = name;
    self.value = value;
};

Constructor.prototype.someHandler = function () {/*self does not reach this here*/};

jsfiddle:http://jsfiddle.net/ZcG3J/2/

Naprawdę nie rozumiem, dlaczego obiekty JS nie mają prawdziwegothis lubself lub cokolwiek, co odnosi się do nich bez tych trudnych kontekstów, zamknięć itd ...

Zasadniczo pytanie brzmi:

Jak mogę użyć metody obiektu jako procedury obsługi zdarzeń i nadal być w stanie dotrzeć do obiektu?

questionAnswers(3)

yourAnswerToTheQuestion