我对 JavaScript 继承和原型有一些问题。我在 stackoverflow/google 中所做的所有研究都引导我使用我的类的原型,但这是我想要避免的一点。我现在的 JavaScript 不是这样构思的,但我确信这是可能的,我只是卡住了。
我有两节课(或者以后可能更多)。一个是基础,它将是一切之母,我希望它具有所有基本属性和方法(就像一个基本的 OO)。我的对象用于几何。
function EnvObject(){
this.position = {x: 0, y: 0};
this.velocity = {x: 0, y: 0};
this.mass = 0; // kg
this.restitution = 0; // Restitution
this.A = 0;
this.Cd = 0; // Drag force
function init(_x, _y, _mass, _restitution)
{
blabla
};
};
function oCircle()
{
function foo(){}
function bar(){}
}
function oSquare()
{
function foo(){}
function bar(){}
}
主类为我的类提供了所有信息,比如正方形或圆形......用原型扩展它会导致大问题和一件好事,方法很好共享(这很酷),但我的属性也是共享的,所以当我在我的 Square 类中更改它,属性也会在 Circle 中更改(这是一件坏事)
我知道主要的解决方案是不提供属性接口,只将它们放在 Square/Circle 类中,但它不是很干净(我的意思是我写了两次或更多相同的属性)。
我的主要目标是创建一个具有 2 个或更多其他类的新类,而不共享任何东西或可能只是几个方法?并最终编写干净的代码?:)
所以我尝试了很多脚本......他们都使用这种技术。或者也许我只是错了,这可能是真的。
我也知道 JS 中不存在该类,它只是一个大功能。像这样写对象更好吗?我倾向于非常喜欢它,因为在我看来使用函数有点混乱。也许以这种方式继承要容易得多?
var envObject = {
position: {x, y}
}
var oCircle = {
foo: function(){}
}