JavaScript如何实现OOP?

JavaScript如何实现OOP?,javascript,oop,javascript-objects,Javascript,Oop,Javascript Objects,我正在学习用JavaScript创建对象。当我这么做的时候 var Person = { name: "John Doe", sayHi: function() { alert("Hi"); } }; 我知道我正在创建Person类的实例,但我不知道如何(或是否)重用该类来创建另一个实例。JavaScript有哪些OOP特性?它是否与其他语言(如Java或Ruby)具有相同的OO特性?有人能解释一下JavaScript是如何进行OOP的吗?在您的示例中,您没有创建Pe

我正在学习用JavaScript创建对象。当我这么做的时候

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

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

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

要创建Person类型的类,请执行以下操作:

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

var somebody = new Person();

否则我认为你的问题太宽泛和复杂了。网上有很多javascript文章和教程(书店里也有书)。去研究它们,如果你不明白一些具体的东西,就在这里发布。

Crockford有一些很好的解释等。

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

你可以做:

var john = Object.create(Person);
或者您可以使用
new
关键字:

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

var john = new Person();
欲了解更多信息,请阅读:


查看Oran Looney的文章:


他有几篇好的Javascript文章。

有几篇好的在线资源可供阅读:

  • 地点

  • @orolo,你应该把你的评论转换成一个答案,这很好。事实上,你例子中的
    人是一个单一的对象,而不是一个类。类通常被定义为函数(然后被更新)。尝试查看类继承的解释等@Cameron:+1。我打算在回答中提出这个链接。我喜欢回到那篇关于对象行为的文章。