Javascript 函数返回定义而不是值(在示例中)

Javascript 函数返回定义而不是值(在示例中),javascript,Javascript,我试图理解一门课程“JS-理解奇怪的部分”中的一个例子,但我不明白为什么我的代码版本会返回不同的输出。问题是关于此问候者应用程序中的greet()函数: (function(global,$){ var Greeter = function (firstName, lastName, language){ return new Greeter.init (firstName, lastName, language); }; var supported

我试图理解一门课程“JS-理解奇怪的部分”中的一个例子,但我不明白为什么我的代码版本会返回不同的输出。问题是关于此问候者应用程序中的
greet()
函数:

(function(global,$){

    var Greeter = function (firstName, lastName, language){
        return new Greeter.init (firstName, lastName, language); 
    };

    var supportedLangs = ["en", "es"];

    var greetings = {
        en: "Hello",
        es: "Hola"
    };

    var formalGreetings = {
        en: "Greetings",
        es: "Saludos"
    };

    Greeter.prototype = {

        fullName: function(){
            return this.firstName + " " + this.lastName;
        },

        greeting: function(){
            return greetings[this.language] + " " + this.firstName + " !";
        },

        formalGreeting: function(){
            return formalGreetings[this.language] + ", " + this.fullName;
        },

        greet: function (formal){
            var msg;

            if (formal) {
                msg = this.formalGreeting();
            } 
            else {
                msg = this.greeting();
            }

            if (console) {
                console.log(msg);
            }

            return this;
        },

    };

    Greeter.init = function (firstName, lastName, language){

        var self = this;
        self.firstName = firstName || "";
        self.lastName = lastName || "";
        self.language = language || "en";

    };

    Greeter.init.prototype = Greeter.prototype;

    global.Greeter = global.G$ = Greeter;

})(window, jQuery);
为什么:

var g = G$("john","doe");
g.greet(false);
返回一个值,同时:

var g = G$("john","doe");
g.greet(true);

返回函数定义-而不是值?

可能您忘记在实际代码中调用this.formalGreeting。当你说“return”时,我想你的意思是“登录到控制台”?因为函数总是返回
this
,所以您需要调用函数
this.fullName()
,而不是在
formatGreeting
中编写
this.fullName
。祝您好运@ArvindDhakad!