我想在JavaScript和Canvas中做一个框架(学术上的)动画,我开始寻找使用javascript进行面向对象编程的指南DONE,我找到了太多的变化。
的示例:
// Example 1
var object = {
public_method: function(){ //do something }
}
// Example 2
function object(){
this.public_method = function(){ //do something }
}
var o = new object();
这是正确的或最好的方式(简单和轻松)。
注意:这种项目的好设计模式?
答案 0 :(得分:4)
第一个只会创建一个实例,而第二个可以用来创建多个实例。
我更喜欢使用构造函数并将方法放在原型中。这样,方法为所有实例创建一次,而不是为每个实例单独创建:
function ExampleObject() {
this.answer = 42;
}
ExampleObject.prototype = {
get_answer: function(){ return this.answer; },
another_method: function(){}
};
var obj = new ExampleObject();
alert(obj.get_answer());
答案 1 :(得分:3)
如果你想要的东西类似于经典的OOP设计(围绕类),你应该这样做:
function MyClass(param1, param2) {
this.param1 = param1;
this.param2 = param2; // These are fields.
}
MyClass.prototype.publicMethod = function() {
// do something
}
var o = new MyClass(x, y);
我建议您详细了解prototype
。这使您可以创建同一“类”的许多实例,而不会浪费内存,执行和编程来单独定义每个实例的方法。