我正在上 Udemy 的类(class)“Javascript:理解奇怪的部分”,遇到了一个让我无法继续前进的问题。我正在构建一个小型 js 框架。它有一个简单的结构:
(function (global, $){
var Greetr = function(firstName, lastName, language){
return new Greetr.init(firstName, lastName, language);
}
Greetr.prototype = {};
Greetr.init = function(firstName, lastName, language){
var self = this;
self.firstName = firstName || "<first name>";
self.lastName = lastName || "<last name>";
self.language = language || "en";
}
Greetr.init.prototype = Greetr.prototype;
global.Greetr = global.G$ = Greetr;
}(window,jQuery));
当我尝试使用我的框架时,我得到了意想不到的结果:
var name = Greetr("John", "Doe");
console.log(name);
输出到控制台:字符串类型的“[object Object]”。
我错过了什么吗?你能帮我想出解决办法吗?
提前致谢!
更新#1 我期待一个对象,以便我可以在 Chrome 的控制台中浏览它,就像您在其中键入“window”一样。
更新#2 令人惊讶的是,错误是在命名我的对象“名称”时:
var name = G$("John", "Doe");
一旦我将其重命名为其他名称,它就可以正常工作了!
请您参考如下方法:
name 是一个 Javascript 对象,所以你不能按原样回显它,因为它不是标量变量。对象可能具有大型结构和父子引用。如果你想回显一个对象值,你可以在你的类中实现一个 toString() 方法来构建一个你可以使用的字符串,
console.log (name.toString ()) ;
或者使用json格式。
console.log (JSON.stringify (name)) ;