任何人都可以告诉我,对于像这样的javascript函数有什么意义:
function f() { return this; }
注意:我正在努力提高自己的javascript技能,发现查看其他人的代码非常好。我碰到了上面的一个,无法解决问题。
答案 0 :(得分:4)
在对象内部,如果你有
return this;
作为方法的最后一行,您可以逐个链接方法调用,如下面的语法:
Foo.doSomething().doSomethingElse().doSomethingCompletelyDifferent();
当每个方法返回值时,与您正在处理的对象相同。
答案 1 :(得分:1)
好吧,从独立函数返回this
并不是很有用,我认为了解this
值的工作原理对您有用:
在以下情况下,this
值隐式设置:
当函数作为方法调用时(该函数作为对象的成员调用):
obj.method(); // 'this' inside method will refer to obj
正常的函数调用:
myFunction(); // 'this' inside the function will refer to the Global object
// or
var global = (function () { return this; })();
使用新运算符时:
var obj = new MyObj(); // this will refer to a newly created object.
function test () {
alert(this);
}
test.call("Hello world");
正如您所看到的,如果您在无对象上下文中进行函数调用(例如示例2),this
值将引用Global对象,除非您正在寻找,否则它不是很有用为此。
当使用函数作为方法时,在对象上下文返回时,这允许构建方法链接或流畅接口的模式。
在constructor functions上,this
是默认返回值,如果您没有返回任何其他对象,或者您甚至没有return
关于你的功能的陈述,this
将被退回。
答案 2 :(得分:0)
它用于返回函数本身,它在jQuery等库中大量使用,以启用函数链,即:
var foo = function1().function2().function3();
答案 3 :(得分:0)
如果这是函数的全部内容,它确实看起来很无用。如果那只是函数的尾端,那么正如Doron所说,它对链接很有用。
我会看看它的名字。这可能是一些聪明的小技巧。
通常当你看到无用的外观代码 - 比如“x = x + 0”或“if(flag)flag = true”或者那种东西时 - 它是任意编辑的代码的标志,或者那里是一个困惑的程序员。但有时它确实做了一些奇怪但有用的事情。知道的唯一方法是研究背景。当然,如果你的代码是如此模糊,以至于其他人必须研究上下文来解决它,你可能应该使用更清晰的代码或至少记录它。