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