2017-02-22 100 views
1

最後決定花時間去掌握使用JS編程,而不是隻在文件尾部填充意大利麪代碼到腳本標記中。在我看來,YDKJS是一個很好的資源。我對工廠模式,IFFE以及如何使用對象和Object.create(...)有很好的理解。JavaScript的使用案例構造函數

我無法找到答案的一個問題是,如果仍然使用構造函數,並且如果是的話,那麼它們的用例是什麼?我問的唯一原因是因爲有多年的文章,那就是答案。似乎這個想法是更接近基於類的繼承(在es6之前)。

本質上是一種設計模式,我應該投入時間學習?

+0

在凱爾辛普森的視頻中提到,ES6中引入了構造函數,使它感覺像基於類的本質,因爲即使JS本身不成熟,它也會成熟。 – Rikin

+1

他正在談論ES6之前的構造函數@Rikin –

+0

「*那裏有多年的文章,那就是答案。」* - 答案是什麼? – Bergi

回答

0

構造函數被設計爲與新的前綴一起使用。新前綴根據函數的原型創建一個新對象,並將該對象綁定到該函數的隱含參數。

來源:JavaScript的由Douglas Crockford的

+0

完全知道他們是什麼,做什麼。主要看它是否仍然是JS的設計模式。 – nerdlyist

1

當然構造函數的好的部分意義和使用。考慮以下幾點:

A = function() 
 
{ 
 
    this.foo = "bar"; 
 
}; 
 

 
A.prototype.printFoo = function() 
 
{ 
 
    console.log(this.foo); 
 
}; 
 

 

 
B = function() 
 
{ 
 
    this.foo = "foobar"; 
 
}; 
 

 
B.prototype = Object.create(A.prototype); 
 

 
aInstance = new A(); 
 
aInstance.printFoo(); // foo 
 

 
bInstance = new B(); 
 
bInstance.printFoo(); // foobar

的位被簡化了:當調用一個函數與new關鍵字,JS將其視爲一個構造函數和通過命名this到它的空對象。將構造函數的返回值賦給變量時,它將包含this對象,該對象通過函數原型的屬性進行擴展,並對構造函數中應用的this進行了修改。因此構造函數在JS中是非常有用和必要的。

在ES6中,構造函數(以及一般的類方向)變得更加突出;看看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes瞭解更多。

1

構造函數還在使用嗎?

是的,他們當然是。他們是並將繼續成爲主導對象建設模式。它們與對象文字一樣普遍。它們在引擎中具有最佳性能優化,並且在需要大量實例時使用。具有初始化構造函數的類模式和方法繼承的原型是您獲得的最方便的模式,自ES6以來使用了額外簡單的class語法。

+0

您能否澄清「他們是否並將繼續成爲主導客體建設模式」? – nerdlyist

+0

這種模式大體上會是什麼樣子? – nerdlyist

+0

@nerdlyist你提到的那些東西,「*工廠模式,IFFE和Object.create(...)*「所有都是構造對象的模式,而構造函數只是另一個,而且是最流行和最常用的模式。 – Bergi