如何在Javascript和代码管理中编写类?

时间:2013-07-29 10:35:39

标签: javascript performance version-control standards

如果我没有错,那么javascript中没有'Class'这样的东西,而是一切都是对象。

但我偶然发现一个实际上有类的代码/脚本。

我想知道如何(下面给出的代码示例)

1)这种类型的代码编写是否有助于管理代码和功能? (是的,我认为一切都在全局Sidebar对象中,所以它的好,命名空间,没有冲突。你的意见?)

2)你如何调用在这类课程中写的任何函数?

3)这种风格实际上是否有任何性能提升?有人可以发布更好的工作示例吗? 脚本取自http://jsfiddle.net/js/Sidebar.js

//注意reportAbuse函数....如何在函数内调用函数?它们是否可公开访问

var Sidebar = new Class({ 
  Implements: [Options, Events],
  parameter: "Sidebar",
  options: {
      DOM: '',
      toggleSidebar: 'toggleSidebar'
  },

  initialize: function(options) {
      this.setOptions(options);
      // Some more code
  },

  toElement: function() {
      return this.element;
  },

  hide: function() {
      this.element.hide();
      this.contentMargin = $('content').getStyle('marginLeft');
      $('content').setStyle('marginLeft', 13);
      this.hidden = true;
      Layout.resize();
  },

  show: function() {
      $('content').setStyle('marginLeft', this.contentMargin);
      this.element.show();
      this.hidden = false;
      Layout.resize();
  },

  reportAbuse: {

      setup: function() {
          this.element = {
              textarea: document.id('abuse-text'),
              submit: document.id('send-abuse')
          };

          if (this.element.textarea && this.element.submit) {
              this.element.submit.addEvents({
                  click: this.validate.bind(this)
              });
          }
      },  

      validate: function(event) {
          event.stop();

          if (this.element.textarea.get('value').trim() !== '') {
              this.send();
          } else {
              this.element.textarea.highlight();
          }
      }
      // Few more functions within reportAbuse function
  }
});

1 个答案:

答案 0 :(得分:0)

上面的代码很可能与库prototypejs

结合使用

@see http://prototypejs.org/learn/class-inheritance.html

这对于组织代码和创建此类结构/对象非常有用

使用上面的代码,创建一个新的Sidebar对象就像

一样简单
var sidebar1 = new Sidebar();

然后调用其中定义的任何函数:

  

sidebar1.show();