繁体   English   中英

Javascript中类似Python的“类”

[英]Python-Like “Classes” in Javascript

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

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

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

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

谢谢。

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

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

如果您认真对待Javascript编程,那么您应该阅读本书

如果你想做真正的重型OO编程,我建议你看一下Coffee Script

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

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

给出了Javascript中对象创建和原型的更完整概述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM