2012-07-30 21 views
1

可能重複:
How to 「properly」 create a custom object in JavaScript?如何在Javascript中構造一個新類型?

是否有可能在Javascript來構造新的類型?如果「一切都是對象」,那麼對象構造函數是用來構造新類型的嗎?如果是這樣,這使得對象構造函數也是類型構造函數,對吧?非常感謝幫助,早上好堆棧溢出!

+0

這是你實在找出自己與快速訪問谷歌。 – 2012-07-30 13:14:15

+0

我不認爲這是可能的,可用的類型在規範中列出:http://es5.github.com/#x8。可能取決於你對「類型」的解釋。 – 2012-07-30 13:15:38

+0

這一切都取決於「類型」這個詞對你意味着什麼。 – Pointy 2012-07-30 13:15:53

回答

3

您可以使用下面的代碼來創建新的類並添加方法和屬性。

 
function ClassName() { 

    //Private Properties 
    var var1, var2; 

    //Public Properties 
    this.public_property = "Var1"; 

    //Private Method 
    var method1 = function() { 
     //Code 
    }; 

    //Privileged Method. This can access var1, var2 and also public_property. 
    this.public_method1 = function() { 
     //Code 
    }; 
} 

//Public Property using "prototype" 
ClassName.prototype.public_property2 = "Value 2"; 

//Public Method using "prototype" 
//This can access this.public_property and public_property2. 
//But not var1 and var2. 
ClassName.prototype.public_method2 = function() { 
    //code here 
} 

//Create new Objects 
var obj1 = new ClassName(); 
//Access properties 
obj1.public_property1 = "Value1"; 

您還可以擴展退出的類。

檢查Crockford's website

感謝GlutamatFelix Kling

+0

那些不是私有屬性,但是普通變量 – Esailija 2012-07-30 13:21:18

+0

不會'this.public_method1'rather被稱爲'特權方法',而原型方法是'公共'方法? – C5H8NNaO4 2012-07-30 13:22:08

+4

由於JavaScript不支持屬性的可見性,我不會談論「私人」和「公共」。局部變量可以用來模擬私有屬性的* some *度,但它遠離其他語言提供的內容(因爲它只是一種黑客攻擊,我不明白爲什麼人們試圖將某些東西強加到它所使用的語言中不是爲了(但這是我個人的觀點))。 – 2012-07-30 13:22:22

相關問題