在JavaScript中为同一个变量调用多个函数

时间:2014-09-05 13:47:47

标签: javascript function syntax call

有没有办法在JavaScript中的同一个对象上调用多个函数? 像这样:

element
    .html('test'),
    .css('color', 'green');

而不是:

element.html('test');
element.css('color', 'green');

编辑:感谢您的回答。我不知道那些jQuery函数返回了它被调用的对象,所以我可以链接它们。虽然,我的问题更像是问一个等价的,比方说,VB .Net With语法:

With object
    .Function1()
    .Function2()
End With 

3 个答案:

答案 0 :(得分:3)

这称为方法链接。如果您调用的方法返回对象引用,则可能,如果不是,则不是。 (但您想在第一次通话后删除,。)

所以它适用于此,例如:

function Thingy() {
}
Thingy.prototype.html = function(value) {
    // ...do something with `value`...

    // return `this` for chaining:
    return this;
};
Thingy.prototype.css = function(name, value) {
    // ...do something with `name` and `value`...

    // return `this` for chaining:
    return this;
};

var t = new Thingy();
t.html('test')
 .css('color', 'green');

例如,大多数jQuery函数在用作setter时返回this用于链接目的(如果您使用jQuery,因为它似乎可能来自函数的名称)你引用了)。 (当他们被用作吸气剂时,当然,他们会返回您获得的价值而不是this。)

但是如果函数没有返回对象引用它就不会起作用:

Thingy.prototype.html = function(value) {
    // ...do something with `value`...
};

t.html('test')
 .css('color', 'green'); // Fails, because what `html` returned wasn't an object

答案 1 :(得分:1)

您使用的是jQuery吗?使用jQuery的方法是通过方法链接。每个函数(html,css)都返回一个jQuery实例,您可以在其中调用实例上的下一个方法。

所以,长话短说,是的,你可以用任何语言真正做到这一点,关于函数返回的内容,以便下一个函数可以调用函数。

答案 2 :(得分:0)

您可以对单个对象进行链接操作,如下所示:

element
.html('test')
.css('color', 'green');

需要注意的是,每个方法都是在前一个方法的返回值上调用的,所以在jQuery中你得到一个返回的对象,这可以很好地工作,但如果你调用一个没有返回值的方法,事情会变得奇怪

第一个代码块中唯一的错误是.html()调用和.css()调用之间的逗号。