在功能上返回此功能

时间:2010-02-23 14:33:16

标签: javascript function

任何人都可以告诉我,对于像这样的javascript函数有什么意义:

function f() { return this; } 

注意:我正在努力提高自己的javascript技能,发现查看其他人的代码非常好。我碰到了上面的一个,无法解决问题。

4 个答案:

答案 0 :(得分:4)

在对象内部,如果你有

return this;

作为方法的最后一行,您可以逐个链接方法调用,如下面的语法:

Foo.doSomething().doSomethingElse().doSomethingCompletelyDifferent();

当每个方法返回值时,与您正在处理的对象相同。

答案 1 :(得分:1)

好吧,从独立函数返回this并不是很有用,我认为了解this值的工作原理对您有用:

在以下情况下,this隐式设置:

  1. 当函数作为方法调用时(该函数作为对象的成员调用):

    obj.method(); // 'this' inside method will refer to obj
    
  2. 正常的函数调用:

    myFunction(); // 'this' inside the function will refer to the Global object
    // or 
    var global = (function () { return this; })();
    
  3. 使用新运算符时:

    var obj = new MyObj(); // this will refer to a newly created object.
    
  4. 您还可以使用callapply方法明确设置此关键字

    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”或者那种东西时 - 它是任意编辑的代码的标志,或者那里是一个困惑的程序员。但有时它确实做了一些奇怪但有用的事情。知道的唯一方法是研究背景。当然,如果你的代码是如此模糊,以至于其他人必须研究上下文来解决它,你可能应该使用更清晰的代码或至少记录它。