在javascript中实现OOP的更好方法

时间:2011-10-26 05:23:40

标签: javascript oop

我想在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();

这是正确的或最好的方式(简单和轻松)。

注意:这种项目的好设计模式?

2 个答案:

答案 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。这使您可以创建同一“类”的许多实例,而不会浪费内存,执行和编程来单独定义每个实例的方法。