2011-05-11 64 views
4

我想知道是否有一种方式,Javascript可以模仿面向对象的语言。即你能否模仿定义具有属性的定制类/对象的能力?由于JSON基本上是一种JavaScript传递对象的方式,我认为必须有一些方法来在客户端创建/存储对象,然后重用它们?如果有人能指点我一个很好的教程(如果可以做到这一点),将不胜感激。Javascript是否可以模仿面向对象的语言?

即使一些示例代码,你可以动态创建一个对象,然后使用jquery消耗它,将不胜感激。

+2

它并不需要模仿,它是。 – Kelly 2011-05-11 20:28:12

回答

1

JavaScript 面向对象。只是它是prototype-based而不是基于类。

也就是说,JSON并不适合序列化具有继承属性的对象。

2

Douglas Crockford是JavaScript社区中的公认人物,

他关于JS的讨论非常好。在这个系列中,他谈到了包括面向对象的JavaScript在内的高级js。

http://video.yahoo.com/video/play?vid=111585 http://video.yahoo.com/video/play?vid=111586 http://video.yahoo.com/video/play?vid=111587

+0

Crockford的+1 - 他的书很棒:“JavaScript:好的部分” – ericvg 2011-05-11 21:15:16

+0

公认的是轻描淡写。这些会谈是正典。 – troelskn 2011-05-12 14:12:33

+0

同意..如果Brendan Eich是JS的父亲,那么Crockford是它的母亲.. :-) – 2011-05-12 14:20:33

0

虽然JavaScript没有内置类系统(尽管下一个版本的Javascript可能包括这个),有许多不同的Javascript OO设计模式模仿类的行为。 Module模式通过允许Javascript对象同时拥有私有成员和公共成员来模仿类。这是这样实现的:

var Person = function() { 
    var firstName = "Greg"; 
    var lastName = "Franko"; 
    return { 
     getFirstName: function() { 
      return firstName; 
     }, 
     getLastName: function() { 
      return lastName; 
     } 
    }   
} 

//Instantiate a new Person object 
var greg = new Person(); 

//This will not work because the firstName property is private 
console.log(greg.firstName); 

//This will work because the getFirstName method is public 
console.log(greg.getFirstName()); 
相关问题