Цепочка методов Javascript - PullRequest
       9

Цепочка методов Javascript

4 голосов
/ 20 октября 2011

Я пытался найти способ связать эти методы вместе, аналогично jQuery.Вот пример того, что я имею в виду:

(function() {
    window.foo = function foo( id ) {
        if( window == this )
            return new foo( document.getElementById( id ) );

        this.alert = function() {
            alert( object.value ); 
        }
    }
}());

foo('input').alert();

Итак, как вы можете видеть, я хотел бы использовать объект, который был передан в класс, как часть функции оповещения, но я не хочусохраните его в классе с помощью this.object = id, а затем выполните alert( this.object.value );

Что было бы элегантно для этого?

Ответы [ 2 ]

4 голосов
/ 20 октября 2011

jQuery только цепочки, возвращая один и тот же объект jQuery из многих его методов.Ваш метод не всегда возвращает значение, поэтому он не будет надежно связан.Если у вас всегда есть возвращаемое значение того же типа, цепочка может начать иметь смысл.

window.foo = function foo( id ) {
    if( window === this )
        return new foo( document.getElementById( id ) );
    this.alert = function() {
        if (this.value) alert( this.value ); 
    }
    return this;
}

foo('input').alert();
0 голосов
/ 20 октября 2011

Вам не нужно хранить ссылку в объекте, потому что у вас уже есть ее как id.

this.alert = function() {
    alert(id.value);
    return this;
}
...