2012-05-05 125 views
1

我已經搜索了一種在javascript中定義類的方法,就像在java或php中一樣,但我找不到任何東西!什麼是在javascript中定義類的最佳方式

我想是這樣

class javascriptClass { 

     function someFunction(){} 

} 
+1

http://stackoverflow.com/questions/1595611/how-to-properly-create-a-custom-object-in-javascript – bobince

回答

4

您可以使用原型類,像這樣:

function MyClass() { 

} 

MyClass.prototype.method1 = function() { 
    // do stuff 
}; 

MyClass.prototype.method2 = function(p) { 
    // do stuff 
}; 

var myClass = new MyClass(); 

現在,從原型MyClass的實例化對象MyClass的之後,您可以訪問的方法對象MyClass的:

myClass.method1(); 

上述方法是偉大的,如果您需要實例月比一個對象/類的實例更重要。

如果你只希望有一個對象,那麼你可以簡單地使用另一種方法作爲一個命名空間與他人,以保護您的功能從碰撞:

var myObject = { 

    method1: function() { 
     // do stuff 
    }, 

    method2: function(p) { 
     // do stuff 
    } 
}; 

myObject.method1(); 
2

在JavaScript中,你不必類作爲這樣。您可以使用new定義用於創建對象的函數,並且可以通過在構造函數的主體中創建它們或者通過對象的原型來添加它們。例如:

function JavaScriptClass() { 
    // I am a JavaScript constructor! Any initialization can be done here. 
} 

// This is the prototype! You can put instance methods and variables (to an extent) here. 
JavaScriptClass.prototype.someFunction = function() { 
    alert('someFunction was called!'); 
}; 

// Now, let's create an instance! 
var obj = new JavaScriptClass(); 
obj.someFunction(); // someFunction was called! 

,您可以訪問使用this當前對象,並在構造並綁定到該對象的任何方法都。請注意,this也可以綁定到JavaScript中的任何東西。這是一種不同類型的OOP。

+0

我如何擴展該類? – Gpak

+1

@ user899566:使用'prototype'對象。將子類的'prototype'設置爲父類的一個實例。 (Google:「原型繼承」) – Ryan

2

與基於類的語言不同,JavaScript是功能性語言或原型語言,您不能使用class關鍵字或您在JavaScript中發佈的簽名種類。在JavaScript中,通常你會做:

function Person(){ 
    // public members 
    this.foo = 'foo'; 
    this.walk = function(){ ......... } 

    // private members 
    var bar = 'bar'; 
    var baz = function(){.........} 
} 

var person = new Person(); 
相關問題