我是Javascript的新手,但我做了很多C#,VB.NET和Java编程,这些语言完全面向对象。似乎Javascript无法支持所有OO功能。
我正在寻找面向对象的Javascript语法参考。
它应包括什么
答案 0 :(得分:2)
并不是Javascript不支持所有OO功能。来自经典OO功能的每个概念都可以在Javascript中实现,问题在于是否真的有必要将所有这些概念转换为它。请记住,Javascript是一种原型语言,大多数情况下,为了自己的利益而更容易使用它,而不是试图从其他静态类型语言中获得所有功能(尽管它不被认为是邪恶的)。
关于您提到的主题:
在子构造函数中调用父构造函数:
由于Javascript是原型语言,因此没有父类,只有父对象。如果以某种方式你需要从后代对象调用父构造函数,你的设计可能是错误的。当您从中生成一个派生(后代)对象时,父对象可能已经存在,因此不需要再次调用构造函数,即使理论上这听起来也很奇怪。
请参阅父对象的实例:
除非您在子对象上创建引用属性,否则无法使用AFAIK。
静态/共享方法:
在Javascript中没有正式的实现。可以像静态方法一样访问每个方法。见例:
Person.sayHello = function(){
alert("Hello!");
}
Person.sayHello();
new Person.sayHello();
受保护/私有字段
ECMAScript 5.1有一个闪亮的附加功能(请参阅我的第二个链接,了解传统的私有成员支持。)。现在你有defineProperty
方法,代码解释了自己:
var cat = {};
Object.defineProperty(cat, "name", {
value: "Maru",
writable: false,
enumerable: true,
configurable: false
});
Object.defineProperty(cat, "skill", {
value: "exploring boxes",
writable: true,
enumerable: true,
configurable: true
});
这里有一些链接对我帮助很大,而且我最近读过的一些链接:
答案 1 :(得分:1)
阅读Javascript, the Good Parts by Douglas Crockford,您将获得所需内容。
答案 2 :(得分:1)
<强>图书强>
<强>画强>
在堆栈溢出
<强>其他强>
答案 3 :(得分:0)
Javascript是一种原型脚本语言。这些链接可以帮助您入门。
Wiki - Prototype base programming
答案 4 :(得分:0)
开始使用John Resig的专业JavaScript技术和#34; Javascript,Good Parts&#34;道格拉斯克罗克福德。
不像Java一样编写javascript。它们不一样。