Javascript方法链

时间:2011-10-20 03:52:14

标签: javascript jquery class method-chaining

我一直在尝试找到一种方法,以与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();

正如您所看到的,我想使用作为alert函数的一部分传递给类的对象,但我不想通过this.object = id将它存储在类中,然后执行alert( this.object.value );

这会是一种优雅的方式吗?

2 个答案:

答案 0 :(得分:4)

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();

答案 1 :(得分:-1)

您不需要在对象中存储引用,因为您已将其作为id

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