如果我遗漏任何重要甚至愚蠢的事,请原谅。我正在尝试从对象中打印构造函数的名称。我遵循了两种方法。
第一种方法的代码如下,
var CF = function () {
p1 = "";
p2 = "";
}
var cf1 = new CF();
cf1.constructor.name
输出:
""
第二个代码,
function CF() {
p1 = "";
p2 = "";
}
var cf1 = new CF();
console.log(cf1.constructor.name);
输出:
CF
我猜你已经想到了我想说的话。第一个CF
对象构造函数名称为""
,其中第二个输出为CF
。
我试图了解下面的差异
var CF = function() { }
typeof CF;
function CF() { };
typeof CF
但是没有运气他们都输出
"function"
为什么这种行为采用第一种方法?有什么区别?
(我正在使用chrome控制台)
答案 0 :(得分:3)
第一个构造函数是一个匿名函数,意味着它没有名称。第二个构造函数有一个名称,允许打印它的构造函数。
答案 1 :(得分:1)
在第一种方法中,您只需创建一个名为CF的对象,该对象包含一个未命名的函数,该函数是一个类的构造函数,在该点之前是未知的。
在第二个代码中,您在名为CF的函数中编写类的构造函数,然后使用该构造函数在名为cf1的对象中创建类的实例。
我希望你理解我想说的话,基本上你的第一个构造函数没有名字。
答案 2 :(得分:0)
function CF() { };
是var CF = function() { }
的简写,通常它们是相同的。
话虽这么说,function CF() { };
在节点调试方面给你带来了一些好处,因为它允许节点对出错的地方/哪里提供更准确的反馈。