我有面向对象编程的背景,开始大量使用JavaScript。随着项目的发展,它变得越来越难以维护。在Java中,我应用面向对象编程原则来控制事物。对于JavaScript,我应该做什么,应该学习什么来使JavaScript应用程序保持可控?
我有面向对象编程的背景,开始大量使用JavaScript。随着项目的发展,它变得越来越难以维护。在Java中,我应用面向对象编程原则来控制事物。对于JavaScript,我应该做什么,应该学习什么来使JavaScript应用程序保持可控?
function SomeObj() {
this.someMethod = function() {
alert('boo');
}
}
var o_obj = new SomeObj();
o_obj.someMethod(); //alerts "boo"
希望这有所帮助。
您也可以使用原型来创建静态函数。
this.prototype.someMethod = function() {
alert('boo');
}
someObj
中使用 首字母大写。这是 JavaScript 中的标准命名规则。它表明应该使用 new
来创建对象的实例。与例如 var now = new Date();
相比较。 - Oleg在JavaScript中定义简单对象和方法的另一种方式(无需使用new
)。
function creaeSomeObj() {
var that = {};
that.someMethod = function() {
alert('boo');
}
return that;
}
var o_obj = createSomeObj();
o_obj.someMethod(); //alerts "boo"
这种模式不支持继承,但很多时候它已经足够了。
为什么要使用“vs”?JavaScript支持面向对象编程,但不是像Java那样传统的基于类的方式。
JavaScript的面向对象编程通常被称为“原型继承”,更具体地说是“委托式原型继承”。这可以简化为“如果你在一个对象中寻找属性'foo',并且在该对象中找不到它,那么尝试在对象的原型中查找'foo'。也就是说,属性的查找被委托给了对象的原型(我们说对象从原型中继承属性)。
原型继承的工作方式有一些影响。例如:
JavaScript中的对象是“动态”的,因为它们只是一堆名称-值对。在运行时可以添加和删除新属性,因此它们比典型类意义上的对象更少“静态”。function myObj() {
this.myMethod = function() {
alert('hello');
}
}
var demo_obj = new myObj();
demo_obj.myMethod();
模式以保持事情的控制
反模式以让事情失去控制