无法子类化的JavaScript类

时间:2009-10-10 19:14:06

标签: javascript class oop final

我有一个JavaScript类,我想这样做它不能被子类化。 (类似于在Java中使用“final”关键字标记类。)这是我的JavaScript类:

function Car(make, model) {
     this.getMake = function( ) { return make; }
     this.getModel = function( ) { return model; }
}

3 个答案:

答案 0 :(得分:7)

JavaScript面向对象的范例是prototype based,这意味着对象从其他对象“继承”,使用它们作为原型。

没有课程,Carconstructor function,该语言可让您扩展任何任何对象。

如果你可以创建一个Car对象实例,则无法阻止该对象被用作其他构造函数的原型。

答案 1 :(得分:1)

鉴于JavaScript甚至实际上没有类(它是基于原型的对象系统,而不是基于类的对象系统),并且它是一种动态语言[1],您想要做的事情是不可能的。此外,JavaScript实际上没有继承/子类 - 它必须通过复制和扩展对象来伪造。没有办法(我知道)阻止其他代码执行此操作。

  1. 在具有元类支持的动态语言中,可以实现这样的功能。 JavaScript不是这样的语言。

答案 2 :(得分:0)

你不能直接这样做,并且不知道有一种方法可以做到这一点,因为Javascript的原型继承,但看看Extjs,这是一个面向繁重的面向对象的js框架型式设计。看看api以及更多源代码,你可能会更接近你想去的地方 - 但不是完全的:)