0

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

但我碰巧找到了一个实际上有一个类的代码/脚本。

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

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
  }
});
4

1 回答 1

0

上面的代码很可能是和prototypejs库结合使用的

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

这对于组织您的代码和创建这样的结构/对象很有用,而不会有太多麻烦

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

var sidebar1 = new Sidebar();

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

sidebar1.show();

于 2013-07-29T11:04:58.913 回答