JOP正确的OOP方式

时间:2017-03-05 09:44:19

标签: javascript oop

我很困惑 我发现在javascript中有很多方法可以做OOP 你能告诉我有什么区别吗?哪一个是正确的?

class Dog{
 bark(){}
}

var Dog = {
  bark : function(){}
}

var Dog = function(){
  this.bark = function(){}
}

3 个答案:

答案 0 :(得分:1)

如果您知道您有ES6功能,我会选择第一个选项:

class Dog {
  bark() {
    // code here
  }
}

你提到的其他方式有缺陷。

  • 第二种方式是创建一个对象实例,而不是一个类。
  • 第三种方式是可以接受的,但在大多数情况下,最好将方法附加到原型上。

如果您不确定您有ES6功能,请执行以下操作:

function Dog() {
  // init
}

Dog.prototype.bark = function() {
  // code here
};

编辑: 正如其他人指出的那样,你的问题在某种程度上是情境性的和/或基于意见的。也就是说,不同的情况可能需要不同的方法,不同的开发者会根据他们的个人品味给出不同的答案。但是,我上面给出的答案是一般JS社区已经同意的,所以我建议你在大多数情况下使用它们。

答案 1 :(得分:0)

  1. 第一个是在ES6中介绍的。这有助于程序员从其他编程语言(如Java)轻松编写Javascript。
  2. 使用javascript对象文字的第二个对象创建。
  3. 最后一个是称为Constructor的函数。您可以使用构造函数来创建像这样的

    的javascript对象

    var object = new Dog();

  4. 存在另一种使用Object构造函数创建javascript对象的方法,如下所示

    var object = new Object();
    

    以上所有方法都是创建对象文字的正确方法。以下是使用object literal

    的一些好处
    1. 更短的类型
    2. 它强调对象只是可变的哈希,而不是需要从“食谱”(来自类)烘焙的东西

答案 2 :(得分:-2)

是js中的类,但仍然会为眉毛引入不会起作用,第二个是make对象somethnig就像一个数组,最后一个是oop在某种程度上...如果你使用的是什么样的脚本它对我来说是javascript oop

var Dog = function(){ this.bark = function(){} }