簡體   English   中英

對JavaScript中的構造函數感到困惑

[英]Confused about constructors in javascript

如果我錯過任何重要甚至愚蠢的事情,請原諒。 我正在嘗試從對象中打印構造函數的名稱。 我遵循兩種方法。

第一種方法的代碼如下,

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控制台)

第一個構造函數是一個匿名函數,意味着它沒有名稱。 第二個構造函數的名稱允許打印其構造函數。

在第一種方法中,您僅創建一個名為CF的對象,其中包含一個未命名的函數,該函數是該類的構造函數,該類在該點之前是未知的。

在第二個代碼中,您在名為CF的函數中編寫類的構造函數,然后使用該構造函數在名為cf1的對象中創建類的實例。

希望您理解我要說的內容,基本上您的第一個構造函數沒有名稱。

function CF() { }; var CF = function() { }簡寫,因此通常它們是相同的。

就是說, function CF() { }; 在節點上進行調試會給您帶來一些好處,因為它使節點可以對發生問題的地方/位置提供更精確的反饋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM