-
Notifications
You must be signed in to change notification settings - Fork 321
Base 与 Widget 通用约定
popomore edited this page Sep 14, 2012
·
5 revisions
在 Arale 中,如果一个对象 object 是 Base 的实例,则该对象上含有以下几种类型成员(members):
-
this.attrs
- 与实例状态相关的属性,比如width
、height
、title
等。attrs
属性通过this.get('width')
来获取,通过this.set('width', 200)
来设置。设置属性值后,会自动触发change:attrName
事件。对于设计良好的组件来说,属性在改变后,会实时反映到实例状态上。 -
properties
- 直接添加在实例上的变量,比如this.element
等。一个实例上拥有哪些properties
,由组件设计者决定。建议越少越好,如无必要,不要暴露给普通用户。 -
methods
- 直接添加在实例上的方法,比如this.show()
等。
对于 properties
和 methods
,如果命名以下划线开头,表示是私有变量,仅供内部使用。
在 Arale 中,基于 Base 的类在实例化时,推荐遵循统一的参数命名和含义约定:
var SomeClass = Base.extend({...});
var object = new SomeClass(config);
实例化时传入的参数叫 config
,表示用户传入的配置信息。config
里绝大部分是 attrs
的配置,也有部分表示事件注册,比如
var object = new SomeClass({
onShow: fn, // 等价 object.on('show', fn)
afterShow: fn, // 等价 object.after('show', fn)
beforeHide: fn, // 等价 object.before('hide', fn)
onChangeTitle: fn // 等价 object.on('change:title', fn)
});
- 能 private 的还是尽量 private. 方式是将方法静态化,需要 this 上的属性时,作为参数传入。
- 如果属性和方法不好 private 化,则用下划线开头开表示 private 性质。
- 其他的都是 public api。