日期:2014-05-16  浏览次数:20337 次

JavaScriptMVC学习(二)--Class
$.Class([name,] [classProps,] [prototypeProps])

这个我理解,相当于我们写的java class. class里有它的属性和方法。

name of the class which can be used for introspection,
classProperties that are attached directly to the constructor, and
instance prototypeProperties.

例如:steal('jquery/class', function(){

  $.Class("Todo",{
    init : function(){},

    author : function(){ ... },

    coordinates : function(){ ... },

    allowedToEdit: function(account) {
     return true;
    }
  });

});
"Todo"是这个类名称,这个类里有init(), author(), allowedToEdit(account) 方法。

当然这个Class和Java Class一样,也可以继承,
例如:
steal('jquery/class', function(){

  $.Class("Todo",{
    init : function(){},

    author : function(){ ... },

    coordinates : function(){ ... },

    allowedToEdit: function(account) {
     return true;
    }
  });

  Todo('PrivateTodo',{
    allowedToEdit: function(account) {
      return account.owns(this);
    }
  })


});
这个PrivateTodo继承了Todo class, 不过修改了allowedToEdit(account)方法。

如果想要用到基类中的方法,可以这样写:_super
var SecureNote = Todo({
  allowedToEdit: function(account) {
    return this._super(account) &&
       this.isSecure();
  }
})

当一个class的构造函数被调用时,会调用init()方法。

例如:
$.Class('Todo',{
  init : function(text) {
    this.text = text
  },
  read : function(){
    console.log(this.text);
  }
})

var todo = new Todo("Hello World");
todo.read() //--> 打印出:Hello World

在调用init() 发放之前,会先调用setup方法。
setup can be used to change (or normalize) the arguments passed to init.