【问题标题】:when to use oop in javascript [closed]何时在 javascript 中使用 oop [关闭]
【发布时间】:2014-06-15 07:11:17
【问题描述】:

担心糟糕。我有以下来自互联网的示例。在该示例中,他们创建汽车类的实例,然后发出警报。

function Car(speed) {
    this.speed = speed;
}

var car1 = new Car(40);
var car2 = new Car(60);

alert("Car1 Speed: " + car1.speed);
alert("Car2 Speed: " + car2.speed);

我的问题是,我们可以从以下概念中使用 oops 概念获得相同的结果,那么为什么要使用 oops 以及在什么情况下我们真正需要 oops。

function Car(speed) {
    return speed;
}

alert("Car1 Speed: " + Car(40));
alert("Car2 Speed: " + Car(60));

【问题讨论】:

  • 我很确定在很多情况下你会使用第一个类似的东西,在很多情况下你会使用第二个类似的东西,还有很多情况可以去无论哪种方式。

标签: javascript oop


【解决方案1】:

您正在使用汽车作为返回速度的方法。
当您拥有多个属性时会发生什么?您会为每个属性创建一个函数吗?
当您继承 Car(Speed Car)时会发生什么?
当您想为所有汽车添加功能时会发生什么?

function Car(speed) {
    this.speed = speed;
}

// all cars will have this function
Car.prototype.GetSpeed = function()
    return this.speed;
}

var c = new Car(30);
console.log(c.GetSpeed());

【讨论】:

  • 这只是说明问题太宽泛而没有给出任何答案......你不能在一个答案中教授编码范式。我想知道发现它有用的两个人是谁..
  • 我同意你不能在一个单一的答案中教授编码,但你可以举一些例子并展示一些最佳实践..
  • 然而你都不做,命名与JS的规范命名方案不一致。你没有解释为什么这样做是有益的,或者为什么应该/不应该 - 这是很自然的,因为它对于一个单一的答案来说太宽泛了。所有这些都会给未来的访问者带来更多的困惑。
  • 更不用说实际的例子本身是很愚蠢的,因为它所说明的只是将东西包装在类中会增加代码对数字的影响。
  • 我确实解释了这样做的好处。他所做的将适用于一个财产,而不是所有“汽车”。他所做的基本上是将 Car 用作函数而不是对象。我不会和你争论。如果您认为答案不好,那就投反对票吧..
【解决方案2】:

也许我完全忽略了这一点,但在第一个选项中,您正在创建一个“对象”。 所以,你有一个Car,它有一个变量speed
您可以向该类添加更多变量(属性/成员),例如轮子的数量,或者其他什么,它们都包含在 Car 概念中。

在你的第二部分,你只是有一个函数来显示你给它的东西...... 你可以更进一步,只做:

alert("Car1 Speed: 40");

这取决于您的需要和/或试图实现的目标...... :)

【讨论】:

    【解决方案3】:

    第一种情况允许您在对象上保持/保存汽车的速度。独立于所有其他汽车对象。然后,您可以在另一个函数中调用、更改和使用。

    第二种情况会返回值,返回时会在函数范围内丢失。

    【讨论】:

      猜你喜欢
      • 2013-01-29
      • 1970-01-01
      • 2022-06-13
      • 2020-12-31
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多