![](/img/trans.png)
[英]Confused about ykatz article on javascript constructors and prototypes
[英]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.