Javascript中类似Python的“类”

时间:2011-08-21 20:33:53

标签: javascript python class

我想知道如何在Javascript中制作类似于Python中的“类”。获取此处列出的Python类和函数:

class one:
    def foo(bar):
        # some code

将使用one.foo(bar)调用函数“foo” JS等价物是什么?我怀疑它会是这样的:

var one = {
    foo: function(bar) {
        // JavaScript
    }
};

感谢。

4 个答案:

答案 0 :(得分:9)

在Javascript中创建类的本机方法是首先定义构造函数:

function MyClass() {
}

和原型:

MyClass.prototype = {
    property: 1,
    foo: function(bar) {
    }
};

然后你可以创建MyClass的实例:

var object = new MyClass;
object.foo();

添加静态方法:

MyClass.staticMethod = function() {};

MyClass.staticMethod();

扩展MyClass:

function SubClass() {
}
SubClass.prototype = new MyClass;
SubClass.prototype.bar = function() {
};

var object = new SubClass;
object.foo();
object.bar();

答案 1 :(得分:6)

看看this link。有一种不同的方法在Javascript中进行OO编程。细节太多了,无法在此解释。

如果您认真对待Javascript编程,则应阅读this book

如果您想进行真正的重型OO编程,我建议您查看Coffee Script

答案 2 :(得分:6)

Classy是一个JavaScript库,它试图将类似Python的类带入JavaScript。

答案 3 :(得分:2)

Javascript没有真正的课程。它具有原型 - 一个对象的实例,用作新对象的模板。

您创建对象的方式是使用文字构造函数。它很简洁,但在构造过程中无法添加或使用复杂的语句。

另一种方式是这样的:

function SomeClass(value) {
    if (value < 0) {
        this.field = -1;
    } else {
        this.field = value;
    }
}

这样就创建了一个新实例:

var obj = new SomeClass(15);

这使您可以在构造对象时使用条件逻辑,for循环和其他更复杂的编程技术。但是,我们只能添加实例字段而不能添加“类”字段。您可以通过修改对象创建函数的prototype来添加类字段。

MyClass.prototype.fieldSquared = function () {
    return this.field * this.field;
}

This在Javascript中提供了对象创建和原型的更完整概述。