有没有办法在JavaScript中的同一个对象上调用多个函数? 像这样:
element
.html('test'),
.css('color', 'green');
而不是:
element.html('test');
element.css('color', 'green');
编辑:感谢您的回答。我不知道那些jQuery函数返回了它被调用的对象,所以我可以链接它们。虽然,我的问题更像是问一个等价的,比方说,VB .Net With
语法:
With object
.Function1()
.Function2()
End With
答案 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()调用之间的逗号。