在javascript中定义类的最佳方法是什么?

时间:2012-05-05 19:56:27

标签: javascript

我已经搜索了一种在javascript中定义类的方法,比如在java或php中,但我找不到!

我想要像

这样的东西
class javascriptClass {

       function someFunction(){}

}

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

在JavaScript中,您没有这样的类。您可以定义用于创建具有new的对象的函数,并且可以通过在构造函数的主体中创建它们或通过对象的 prototype 添加它们来为它们提供方法。例如:

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。

答案 2 :(得分: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();