在构造函数定义中“返回此”:它的作用是什么?

时间:2014-01-12 15:55:30

标签: javascript

// Q returns new Library object
    var Q = function (params) {
        return new Library(params);
    };

    // In our Library we get our selector with querySelectorAll (we do not support < ie8)
    // We also add selector length, version and twitter/github or whatever you like as information about your library.
    var Library = function (params) {
        // Get params
        var selector = document.querySelectorAll(params),
            i = 0;
        // Get selector length
        this.length = selector.length;
        this.version = '0.1.0';
        this.twitter = 'http://www.twitter.com/mmmmm_';

        // Add selector to object for method chaining
        for (; i < this.length; i++) {
            this[i] = selector[i];
        }

        // Return as object
        return this;        
    };

为什么我们在构造函数的末尾有return this;?如果我们省略它会怎么样?

这不是我第一次在构造函数中找到此指令,但有时会出现,有时(在其他类别的其他脚本中)它不会出现,我不明白其中的原因。

3 个答案:

答案 0 :(得分:4)

假设使用new Ctor()语法调用构造函数,如果您编写return this则没有区别。如果构造函数到达末尾而没有返回任何内容,则隐式返回this

如果在不使用new的情况下将构造函数作为常规函数调用,那么它将像往常一样运行:在没有返回return语句的情况下到达末尾的函数返回undefined和{{1} }语句将取决于传入的return this的值(它将取决于您如何调用该函数)。

答案 1 :(得分:1)

它返回当前对象实例,允许您进行方法链接(例如object.method1().method2().method3();

答案 2 :(得分:0)

它就在那里你可以在同一个对象上链接多个函数。 jQuery无处不在。