1

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

我想要类似的东西

class javascriptClass {

       function someFunction(){}

}
4

3 回答 3

5

您可以使用原型类,如下所示:

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();
于 2012-05-05T19:59:17.517 回答
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。

于 2012-05-05T19:59:55.777 回答
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();
于 2012-05-05T20:02:16.597 回答