我想知道如何在Javascript中制作类似于Python中的“类”。获取此处列出的Python类和函数:
class one:
def foo(bar):
# some code
将使用one.foo(bar)
调用函数“foo”
JS等价物是什么?我怀疑它会是这样的:
var one = {
foo: function(bar) {
// JavaScript
}
};
感谢。
答案 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中提供了对象创建和原型的更完整概述。