【问题标题】:Python-Like "Classes" in JavascriptJavascript中的类Python“类”
【发布时间】:2011-08-21 20:33:53
【问题描述】:

我想知道如何在 Javascript 中创建类似于 Python 中的“类”。使用此处列出的 Python 类和函数:

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

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

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

谢谢。

【问题讨论】:

  • 所以问题不能代替整个教程/书。去拿一个,如果你认为一个对象字面量类似于一个类,你可能需要它......

标签: javascript python class


【解决方案1】:

在 Javascript 中创建类的原生方式是首先定义构造函数:

function MyClass() {
}

还有一个原型:

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

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

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

添加静态方法:

MyClass.staticMethod = function() {};

MyClass.staticMethod();

扩展我的班级:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      如果你对 Javascript 编程很认真,你应该阅读this book

      如果你想做真正繁重的面向对象编程,我建议你看看Coffee Script

      【讨论】:

      【解决方案4】:

      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 中的对象创建和原型。

      【讨论】:

        猜你喜欢
        • 2011-10-28
        • 2021-02-13
        • 1970-01-01
        • 1970-01-01
        • 2019-02-04
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多