【发布时间】:2012-03-13 23:45:21
【问题描述】:
我想知道在 Javascript 中使用 OOP 的最佳方式是哪种方式。
有这个原型的东西,你有功能风格的方式。但是两者都有非常糟糕的方法来继承基类。
所以我尝试构建一种方法来实现这一点,而不必使用原型等。
function Car(name) {
this.Name = name;
this.FullName = function () {
return this.Name;
}
}
function SpecialCar(name, variant) {
//BaseClass.apply(this, PARAMS AS ARRAY);
Car.apply( this, [name] );
//new property
this.Variant = variant;
//override function
this.FullName = function () {
return this.Name + " " + this.Variant ;
}
}
var audi = new Car("audi");
$("#result").append(audi.FullName() + "<br>");
var audia3 = new SpecialCar("audi", "a3");
$("#result").append(audia3.FullName()+ "<br>");
你可以在这里查看 jsFiddle:http://jsfiddle.net/vu9ZF/2/
这样可以吗,还是只是不好的做法?
很高兴能得到一些答案,为什么其他方法更好,因为我只是不明白。
编辑:谢谢大家这么快回复我! 我试图为自己在 javascript 中找到某种 OOP 方式,而不是回答如何在 javascript 中进行 oop。 我不喜欢为此使用原型的方式,因为我大部分工作时间都在使用 c#,而且在“c#-like oop”和“prototype oop”之间切换有点混乱。 但是 cmets 中有人告诉我,避免原型不是一个好主意,所以我放弃了。
感谢stackoverflow,您的一切都很棒并为我节省了很多时间=)
【问题讨论】:
-
如果我是你,我会去看看 Mootools。它有一个内置的类系统,非常容易理解。
-
:/ 我的项目中不能使用除 kendoui 和 jquery 以外的其他框架
-
@ChaosPandion 因为它与其他语言完全不同。
-
@SSchnitzler - 想一想……这个理由在逻辑上有意义吗?
-
@SSchnitzler 那是因为它是一种不同的语言。它不是 C(++|#) 或Java,需要学习新的做事方式才能正确使用。
标签: javascript oop inheritance