如何在JavaScript中定义OOP类?
根据我的观察,我正在读的关于JavaScript的书指出JavaScript中存在OOP?我的意思是它没有解释如何定义一个类。有人能给我一个示例片段吗 谢谢JavaScript是而不是基于类的 基于原型的编程是一种风格 面向对象编程在计算机中的应用 哪些课程不存在,以及 行为重用(称为继承 在基于类的语言中)执行 通过克隆现有的 用作原型的对象。这 模型也可以称为无类, 面向原型还是基于实例 编程。代表团是 支持 基于原型的编程如何在JavaScript中定义OOP类?,javascript,oop,Javascript,Oop,根据我的观察,我正在读的关于JavaScript的书指出JavaScript中存在OOP?我的意思是它没有解释如何定义一个类。有人能给我一个示例片段吗 谢谢JavaScript是而不是基于类的 基于原型的编程是一种风格 面向对象编程在计算机中的应用 哪些课程不存在,以及 行为重用(称为继承 在基于类的语言中)执行 通过克隆现有的 用作原型的对象。这 模型也可以称为无类, 面向原型还是基于实例 编程。代表团是 支持 基于原型的编程 下面的代码片段可以帮助您开始使用JavaScript的无类、基于实
下面的代码片段可以帮助您开始使用JavaScript的无类、基于实例的对象:
function getArea() {
return (this.radius * this.radius * 3.14);
}
function getCircumference() {
var diameter = this.radius * 2;
var circumference = diameter * 3.14;
return circumference;
}
function Circle(radius) {
this.radius = radius;
this.getArea = getArea;
this.getCircumference = getCircumference;
}
var bigCircle = new Circle(100);
var smallCircle = new Circle(2);
alert(bigCircle.getArea()); // displays 31400
alert(bigCircle.getCircumference()); // displays 618
alert(smallCircle.getArea()); // displays 12.56
alert(smallCircle.getCircumference()); // displays 12.56
示例:javascript中的任何函数都可以用于创建对象: 例如:
function MyPoint(x, y) {
this.x = x;
this.y = y;
this.distanceTo = getDistance;
}
function getDistance(p) {
var dx = this.x-p.x;
var dy = this.y-p.y;
return Math.sqrt(dx*dx + dy*dy);
}
var p0 = new MyPoint(1, 2);
var p1 = new MyPoint(2, 3);
window.alert('The distance is ' + p0.distanceTo(p1));
在JavaScript中,一切都是一个对象。因此,即使是函数也是一个对象。所以在js中(小于<版本2),函数生成类(它们本身就是第一类对象)。去吧,为了更好地理解这里有两种不同的方法
if (typeof FFX == "undefined") {
FFX = {};
}
//Static class
FFX.Util = ({
return {
method:function(){
}
})();
FFX.Util.method();
//Instance class
FFX.Util2 = ({
// private method
var methodA=function(){
alert("Hello");
};
return {
method:function(){
//Call private method
methodA();
}
});
var x= new FFX.Util();
x.method();
另一种方式
function MyClass(){
}
/* privileged functions */
MyClass.prototype.hello = function(){
alert("Hello");
}
此外,您还可以查看jquery、prototype等如何处理类,并查看它们是否适合您的需要。在JavaScript中没有一种标准的OOP方法。每个人使用稍有不同的类/实例系统,大多数书籍都回避了这个问题。有关如何在JS中使用OO的讨论,请参阅,并选择您最喜欢的方法。我建议您对如何使用JS的原型继承以及如何在JS中模拟经典OO继承进行简明、准确的解释
哪本书,哪种代码,为什么,什么,接受一些answers@AndyE:一周内有六个不被接受的问题也没那么糟糕。@Gumbo:是的,但一周内有六个问题,然后就开始了。我认为最好是促使某人尽早标记一些答案:-)@sasori:如果您之前问题的任何答案都令人满意和/或解决了您的问题,您可能希望将其标记为“已接受”。这被认为是良好的礼仪,并将鼓励更多的用户回答您未来的任何问题。在任何情况下,欢迎使用堆栈溢出。@sasori:请阅读FAQ()。您的示例根本不使用基于原型的继承。这当然是进行继承的有效方法,但不要声称这是基于原型的继承。@Keith:更新了我的答案:使用更准确的术语。。。尽管如此,我认为上面的内容仍然可以被视为基于原型的编程的一个例子:在基于原型的系统中,有两种构建新对象的方法,一种是通过克隆现有对象,另一种是通过ex-nihilo(“从无到有”)对象创建。来源:@DanielVassallo感谢您提供了这个示例,让Java变得简单:)是的。道格拉斯·克罗克福德(Douglas Crockford)的网站(www.Crockford.com)上也有很好的解释。你可能会发现他做的视频也很有用——这里有一些。但您仍然可以模拟基于类的继承的各个方面,并使其感觉像常规类。