augment

Methods

KISSY.augment()
Function KISSY.augment ( r, s1 [, s2 , ...], ov = true, wl )
将 s1,s2.... 的 prototype 属性的成员复制到 r.prototype 上.
Parameters:
  • r (function) – 将要扩充的函数
  • ...s1 (function|object) – 扩充来源函数或对象. 非函数对象时复制的就是 s 的成员.
  • ov (boolean) – 是否覆盖 r.prototype 同名属性.
  • whitelist (Array<string>) – 属性来源对象的属性白名单, 仅在名单中的属性进行复制.
Returns:

r

Return type:

function

例如:

var S = KISSY,
Shoutable = {
    shout: function() { alert('I am ' + this.name + '.'); }
};

function Dog(name) { this.name = 'Dog ' + name; }
function Pig(name) { this.name = 'Pig ' + name; }

S.augment(Dog, Shoutable);
S.augment(Pig, Shoutable);

new Dog('Jack').shout(); // => I am Dog Jack.
new Pig('Mary').shout(); // => I am Pig Mary.

augment 方法在 KISSY 里非常基础非常重要. 传统 OO 语言里, 可以通过继承或接口来实现共性方法. 在 JavaScript 里, 通过 mixin 特性, 一切变得更简单. augment 是动态语言 mixin 特性的体现, 灵活运用, 能让代码非常优雅简洁.