我想知道是否有一种方式,Javascript可以模仿面向对象的语言。即你能否模仿定义具有属性的定制类/对象的能力?由于JSON基本上是一种JavaScript传递对象的方式,我认为必须有一些方法来在客户端创建/存储对象,然后重用它们?如果有人能指点我一个很好的教程(如果可以做到这一点),将不胜感激。Javascript是否可以模仿面向对象的语言?
即使一些示例代码,你可以动态创建一个对象,然后使用jquery消耗它,将不胜感激。
我想知道是否有一种方式,Javascript可以模仿面向对象的语言。即你能否模仿定义具有属性的定制类/对象的能力?由于JSON基本上是一种JavaScript传递对象的方式,我认为必须有一些方法来在客户端创建/存储对象,然后重用它们?如果有人能指点我一个很好的教程(如果可以做到这一点),将不胜感激。Javascript是否可以模仿面向对象的语言?
即使一些示例代码,你可以动态创建一个对象,然后使用jquery消耗它,将不胜感激。
我发现这是一个伟大的教程:https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript
必须说,JavaScript是面向对象的,但它是基于原型的,而不是基于类。
Javascript是一种面向对象的语言,它不仅仅是一个基于类的对象系统,而是一个基于原型的对象系统。看到这篇文章:http://en.wikipedia.org/wiki/Prototype-based_programming
简短回答是“是”。有几个优秀文章在developer.mozilla.org:
JavaScript 是面向对象。只是它是prototype-based而不是基于类。
也就是说,JSON并不适合序列化具有继承属性的对象。
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
如果你喜欢一个实际的书,这一直对我很有用: Pro Javascript Design Patterns
虽然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());
它并不需要模仿,它是。 – Kelly 2011-05-11 20:28:12