【问题标题】:How JavaScript does OOP?JavaScript 如何进行 OOP?
【发布时间】:2010-10-08 20:37:41
【问题描述】:

我正在学习如何在 JavaScript 中创建对象。当我这样做时......

var Person = {
   name: "John Doe", 
   sayHi: function() {
   alert("Hi");
   }
};

我知道我正在创建一个 Person 类的实例,但我不知道如何(或是否)可以重用该类来创建另一个实例。 JavaScript 有哪些 OOP 特性?它是否具有与其他语言(如 Java 或 Ruby)相同的 OO 特性?有人可以解释一下 JavaScript 是如何做 OOP 的吗?

【问题讨论】:

  • @orolo,你应该把你的评论变成一个答案,这很好。
  • 实际上,您示例中的Person 是单个对象,而不是类。类通常被定义为函数(然后被更新)。尝试查看 mckoss.com/jscript/object.htm 以了解类继承等的说明。
  • @Cameron:+1。我打算在答案中建议该链接。我喜欢回到那篇关于对象行为的文章。

标签: javascript oop javascript-objects


【解决方案1】:

在您的示例中,您没有创建 Person 类的实例。您正在创建一个名为“Person”的变量,其中包含一个匿名对象。

要创建一个 Person 类型的类,你可以这样做:

function Person() {
   this.name = "John Doe", 
   this.sayHi =  function() {
   alert("Hi");
   }
}

var somebody = new Person();

否则我认为您的问题过于宽泛和复杂。网上有很多 javascript 文章和教程(书店里也有书籍)。去研究它们,如果您不了解具体内容,请在此处发布。

【讨论】:

    【解决方案2】:

    JavaScript 不使用类。它使用原型设计。有多种创建新对象的方法。

    你可以这样做:

    var john = Object.create(Person);
    

    或者您可以使用new 关键字:

    function Person() = {
       this.name = "John Doe", 
       this.sayHi = function() {
         alert("Hi");
       }
    };
    
    var john = new Person();
    

    更多信息请阅读:

    【讨论】:

      【解决方案3】:

      Crockford 有一些很好的解释 here 等。

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        查看 Oran Looney 的文章:http://oranlooney.com/classes-and-objects-javascript/

        他有几篇很好的 Javascript 文章。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-13
          • 2018-10-06
          • 1970-01-01
          • 2014-06-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多