JavaScript中类似Python的“类”

4
我在想如何在JavaScript中创建类似于Python的“类”。请看下面列出的Python类和函数:

我在想如何在 JavaScript 中创建类似于 Python 的“类”。请看下面列出的 Python 类和函数:

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

调用函数 "foo" 的方式为 one.foo(bar)
JS 中的等效写法是什么呢?我猜应该是这样的:

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

感谢您的选择。

6
SO的问题不能取代详尽的教程/书籍。去找一本吧,如果你认为对象字面量和类相似的话,你可能需要它。 - user395760
4个回答

11

在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();

6
请看这个链接,其中介绍了不同的JavaScript面向对象编程的方法。由于细节太多,在此无法解释。
如果你想认真学习JavaScript编程,你应该读一下这本书
如果你想进行真正的重型面向对象编程,我推荐看看Coffee Script

我刚开始玩咖啡脚本,但到目前为止,我真的很喜欢它的类实现方式:http://jashkenas.github.com/coffee-script/#classes - peterjmag

6

Classy是一个JavaScript库,旨在将类似Python的类引入JavaScript。


3

Javascript并没有真正的类(class)。它有的是原型(prototype)——一种用作新对象模板的对象实例。

你创建对象的方式是使用字面构造器(literal constructor)。这很简洁,但缺点是不能添加或在构建中使用复杂语句。

另一种方式如下:

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;
}

这篇文章提供了有关JavaScript中对象创建和原型的更全面的概述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接