2013-09-01 43 views
1

我正在創建一個JavaScript框架,用於在經典的面向對象編程中製作應用程序(所以只用類/接口而不是原型)。然而,我仍然有一個給這些名稱的問題。Class,Interface,Prototype,and

例如:

var Bidule = function() { /*...*/ } ; 
Bidule.prototype = { /*...*/ } ; 

是Bidule作爲類OOP類是一個構造?或者它只是一個構造函數?由於類沒有原型,我不認爲它可以被稱爲真正的類。

所以這意味着我應該稱它們爲'構造函數'。但是,接口或抽象類呢?如果他們不是構造函數,那麼正確的詞是什麼?並且是一種界面的一種類?

我在我的框架中設計了構造函數,類和接口。但是我需要一個名字重新集結所有主題的,所以我們可以建立這些像這樣的一個:

var Bidule = new _NAME_.Class(/*...*/) ; // Where _NAME_ is the name of the container of class/function/interface. 

我在想「概念」的,但我不知道,想知道你的意見。


我也命名爲 「知名度」 用於描述公共/私有類常見的詞, 「」 靜態/抽象/接口/單/ final類。這些是正確的嗎?


而最後一個問題:是否有動詞「延長」和「繼承」之間的區別嗎?

在此先感謝您的答案。

回答

1

JavaScript不是傳統的OO語言,它是原型。出於這個原因,一些關於面向對象的概念不適用於js。

Bidule是你的類型,所以它是你的「班級」。構造函數是您指定給該變量的函數

var Bidule = function() { /*...*/ } ; 
Bidule.prototype = { /*...*/ } ; 

var obj = new Bidule(); 
obj.foo = 'bar'; 

var obj2 = new Bidule(); 
obj2.foo = 'foo'; 

alert(obj instanceof Bidule); // true 
alert(obj2 instanceof Bidule); // true 
alert(obj.foo); // bar 
alert(obj2.foo); // foo 

JavaScript不支持抽象類或接口,不,接口不是某種類。界面定義合同,或你的班級做什麼,但不指定如何

在此背景下,擴展和繼承具有相同的含義。

+0

謝謝你所有的答案。 所以如果'Bidule'是一個類型,我應該如何調用「static/abstract/interface/singleton/final」? 「_attributes_」類? – Tot

+0

最後,靜態和抽象是一個類的**修飾符**。接口是一個**合同**,一個類在執行時會簽名。 Singleton是一個**設計模式**,它爲整個應用程序提供了一個單一的對象實例。 –

+0

當然,只有一個鍵我可以切換到這五個單詞中的一個。 但你回答了我的問題。 :) 再次感謝 ! – Tot

相關問題