函数返回定义而不是值(例如)

时间:2020-02-21 06:55:27

标签: javascript

我正在尝试从课程“ 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);

返回函数定义-代替值?

0 个答案:

没有答案
相关问题