假设我有一个返回对象的函数:
getMyObject(){
//do stuff here
return object;
}
在函数名称本身上调用方法(不返回任何内容)是不好的做法:
getMyObject().method();
而不是将一个变量赋给返回对象,然后在该变量上调用该方法:
var returnedObject = getMyObject();
returnedObject.method();
我正在使用一个包含许多嵌套框架的html页面,并且我可以访问一个返回其中一个框架的函数。这个框架可能会在我的脚本中的其他函数中多次使用,我想知道我是否可以按照上面提到的方式访问框架,或者是否更好地声明一个全局变量。
* 编辑:* 啊,我没有机会使用jQuery。很高兴知道!
答案 0 :(得分:3)
是的,这完全没问题。例如,jQuery也使用它。它返回可以调用方法immediatley的对象。这称为链接。
答案 1 :(得分:1)
在您的示例中,方法链是 更好的做法 恕我直言。如果函数返回一个对象,在该对象上调用方法,但在调用该方法后不需要引用该对象,则不要将其赋值给变量。
此外,jQuery代码始终(1):
执行此操作$('#foo').on('click',function(){});
/\ \\
|| \\
|| \\
function call returns jQ object <============|
\\ ||
\\call method "on" upon _||
(1)澄清:我并未声称所有jQ方法都返回对象.attr()
或.prop()
。我所说的“所有时间”实际上是OP描述的场景是jQ代码中的非常常见(函数调用,返回对象上的调用方法):
var someString = $($('.foo').get(0)).attr('id');//tricky little bugger, this :)
var aBool = $('#foo').prop('checked');
答案 2 :(得分:0)
通常,没有。像这样的链接方法调用通常更简单,更优雅,更易于阅读。但是,在某些情况下,最好使用变量。
calculateResults()
的方法,并且它从数据库中提取数据,则需要一些时间。如果数据没有变化,那么每次调用该方法都会产生相应的费用。最好将其存储在变量中并重复使用。nextItem()
这样的函数进入下一个项目并返回它(一个Java迭代器),那么调用它比预期更多将实际改变结果。在这种情况下,您别无选择,只能存储结果,因为多次调用它会产生不正确的行为。否则,链条走开!