aralejs/class — pull request #13 by popomore (2014-01-26 08:51:44+00:00)
Title: Class 1.2.0

class@1.2.0 和 class@2.0.0 会调整一些接口，class@2.0.0 还会去除兼容性代码。

**不要 merge**

## 现有 API

### 创建

创建一个 Class， **常用**

```
var Base = Class.create({
initialize: function () {}
});
```

创建一个 Class，继承一个原生的 function

```
function Base() {}
Base.prototype.initialize = function() {}
Class.create(Base, {
initialize: function () {}
});
```

### 继承

通过 extend 来继承， **常用**

```
var Base = Class.create({
initialize: function () {}
});
Base.extend({
initialize: function () {}
});
```

通过 create 来继承

```
var Base = Class.create({
initialize: function () {}
});
var Widget = Class.create(Base, {
initialize: function () {}
});
```

通过 Extends 来继承

```
var Base = Class.create({
initialize: function () {}
});
var Widget = Class.create({
Extends: Base,
initialize: function () {}
});
```

### 混入

使用 Implements 混入， **常用**

```
var Base = Class.create({
Implements: Mixins,
initialize: function () {}
});
```

使用 implement 混入

```
var Base = Class.create({
initialize: function () {}
});
Base.implement(Mixins);
```

### 其他功能

转换

```
function Base() {}
Base.prototype.initialize = function() {}
Class(Base);
```

静态方法 Statics，不写示例了

## 整理 API

class 主要有创建，继承和混入的功能，但从上面 api 来看每种都有两种以上的可选项，但有些并不常用。

- 创建只保留 Class.create(properties)
- 继承和混入只支持 implement 和 extend，去除 Implements 和 Extends
- 去除 Statics
- 去除 Class 转换

Implements 虽然常用，但是为了 API 保持一致，我觉得方法调用优于属性。

## 格式

- 加分号 ！！！
- 通过 jshint