我想知道Javascript是否可以模仿面向对象语言。即你能模仿用属性定义自定义类/对象的能力吗?由于JSON基本上是javascript传递对象的一种方式,我认为必须有一些方法在客户端创建/存储对象,然后重用它们?如果有人能给我指出一个很好的教程(如果可以做到这一点),那将非常感激。
即使是一些示例代码,您可以动态创建一个对象,然后使用jquery使用它。
答案 0 :(得分:5)
Javascript是一种面向对象的语言,它不是基于类的对象系统,而是基于原型的对象系统。请参阅此文章:http://en.wikipedia.org/wiki/Prototype-based_programming
答案 1 :(得分:4)
我发现这是一个很棒的教程:https://developer.mozilla.org/en/Introduction_to_Object-Oriented_JavaScript
必须说Javascript是面向对象的,但它是基于原型的,而不是基于类的。
答案 2 :(得分: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
答案 3 :(得分:1)
简短的回答是“是”。 developer.mozilla.org上有几篇优秀的文章:
答案 4 :(得分:1)
答案 5 :(得分:1)
JavaScript 面向对象。只是它是prototype-based而不是基于类。
尽管如此,JSON并不适合序列化具有继承属性的对象。
答案 6 :(得分:0)
如果您更喜欢实际的书,这对我来说非常有用: Pro Javascript Design Patterns
答案 7 :(得分: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());