我正在尝试从课程“ 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);
返回函数定义-代替值?