无法子类化的JavaScript类

无法子类化的JavaScript类,javascript,class,oop,final,Javascript,Class,Oop,Final,我有一个JavaScript类,我想使它不能被子类化。类似于在Java中用final关键字标记类。下面是我的JavaScript类: function Car(make, model) { this.getMake = function( ) { return make; } this.getModel = function( ) { return model; } } 考虑到JavaScript实际上没有类,它是一个基于原型的对象系统,而不是一个基于类的对象系统,而且它是

我有一个JavaScript类,我想使它不能被子类化。类似于在Java中用final关键字标记类。下面是我的JavaScript类:

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

考虑到JavaScript实际上没有类,它是一个基于原型的对象系统,而不是一个基于类的对象系统,而且它是一种动态语言[1],您想要做的是不可能的。此外,JavaScript实际上没有继承/子类化——它必须通过复制和扩展对象来伪造。据我所知,没有办法阻止其他代码这样做

在具有元类支持的动态语言中,实现这样一个特性是可能的。JavaScript不是这样一种语言。
考虑到JavaScript实际上没有类,它是一个基于原型的对象系统,而不是一个基于类的对象系统,而且它是一种动态语言[1],您想要做的是不可能的。此外,JavaScript实际上没有继承/子类化——它必须通过复制和扩展对象来伪造。据我所知,没有办法阻止其他代码这样做

在具有元类支持的动态语言中,实现这样一个特性是可能的。JavaScript不是这样一种语言。
JavaScript面向对象的范例是,这意味着对象从其他对象继承,将它们作为原型

没有类,Car是一种语言,该语言允许您扩展任何对象


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

JavaScript面向对象的范例是,这意味着对象继承自其他对象,将其用作原型

没有类,Car是一种语言,该语言允许您扩展任何对象


如果您可以创建一个Car对象实例,那么就没有办法阻止该对象被用作其他构造函数的原型。

不,您不能直接这样做,也不知道有一种方法可以实现给定Javascript的原型继承,但请看,这是一个js框架,它有一个重的面向对象类型设计。看看api和更多的源代码,你可能会更接近你想要去的地方——但不是全部:

不,你不能直接这样做,也不知道有一种方法可以做到这一点,给定Javascript的原型继承,但看看,这是一个js框架,它有一个重的面向对象类型设计。查看api和更多源代码,您可能会更接近您想要去的地方-但不是完全: