### Methods

#### isUndefined `Boolean isUndefined ( o )`

判断是否 undefined

#### isBoolean `Boolean isBoolean ( o )`

判断是否布尔值。

#### isString `Boolean isString ( o )`

判断是否字符串。

#### isNumber `Boolean isNumber ( o )`

判断是否有效数值。

Infinity 和 NaN 返回 false.

#### isPlainObject `Boolean isPlainObject ( o )`

判断是否普通对象（用 { } 或 new Object 创建的对象）。

#### isEmptyObject `Boolean isEmptyObject ( o )`

判断是否空对象（没有任何可遍历的属性）。

    var S = KISSY;

    S.isEmptyObject({}); // => true
    S.isEmptyObject([]); // => true
    S.isEmptyObject({ a: 'a' }); // => false

#### isFunction `Boolean isFunction ( o )`

判断是否函数。

IE 中，DOM 方法和 window 对象的部分方法比如 alert, 返回 false.

#### isArray `Boolean isArray ( o )`

判断是否数组。

arguments 和 NodeList 不是数组，返回 false.

#### trim `String trim ( str )`

去除字符串两端的空白字符。

#### substitute `String substitute ( str, o, regexp )`

将字符串中的占位符替换为对应的键值。

    var S = KISSY,
        str = '{name} is {prop_1} and {prop_2}.',
        obj = {name: 'Jack Bauer', prop_1: 'our lord', prop_2: 'savior'};

    S.substitute(str, obj); // => 'Jack Bauer is our lord and savior.'

#### each `void each ( arr, fn, context )`

遍历数组中的每一项，执行指定方法。

Parameters:
  `arr` `<Array>` 需要遍历的数组。
  `fn` `<Function>` 执行函数。执行时，接收 3 个参数：当前项、当前 index, 数组。
  `context` `<Object>` 环境对象。

    var S = KISSY,
        arr = [1, 2, 3, 4, 5],
        sum = 0;

    S.each(arr, function(item) {
        sum += item;
    });
    S.log(sum); // => 15

#### indexOf `Number indexOf ( elem, arr )`

返回元素 elem 在数组 arr 中的序号。找不到时返回 -1.

#### inArray `Boolean inArray ( elem, arr )`

判断元素 elem 是否在数组 arr 中。

#### makeArray `Array makeArray ( o )`

将对象 o 转换为数组。

可以利用此方法将 arguments, NodeList 等 array-like 对象转换为真实数组。

    var S = KISSY;

    S.makeArray('str'); // => ['str']
    S.makeArray(S.query('.div')); // => 由所有 div 元素组成的数组
    S.makeArray(null); // => []

makeArray 方法永远返回数组。

#### filter `Array filter ( arr, fn, context )`

遍历数组，过滤出符和条件的数组项。

Parameters:
  `arr` `<Array>` 需要遍历的数组。
  `fn` `<Function>` 过滤函数。执行时，接收 3 个参数：当前项、当前 index, 数组。
  `context` `<Object>` 环境对象。

    var S = KISSY,
        arr = [1, 2, 3, 4, 5];

    var ret = S.filter(arr, function(item) {
        return item % 2 === 0;
    });
    S.log(ret); // => [2, 4]

#### param `String param ( o )`

将对象 o 转换为参数字符串。

    var S = KISSY;

    S.param({ foo: 1, bar: 2 }); // => foo=1&bar=2
    S.param({ foo: 1, bar: [2, 3] }); // => foo=1&bar%5B%5D=2&bar%5B%5D=3
    S.param({ foo: '', bar: 2 }); // => foo=&bar=2
    S.param({ foo: undefined, bar: 2 }); // => foo=undefined&bar=2

返回的字符串经过了 encodeURI 编码。比如 `foo=1&bar%5B%5D=2&bar%5B%5D=3`, 解码后是 `foo=1&bar[]=2&bar[]=3`

#### unparam `Object unparam ( str )`

将参数字符串 str 还原为对象。

    var S = KISSY;

    S.unparam('foo=1&bar=2'); // => { foo: 1, bar: 2 }
    S.unparam('foo=1&bar[]=2&bar[]=3'); // => { foo: 1, bar: [2, 3] }

#### later `Object later ( fn, when, periodic, o, data )`

延迟执行指定函数。

Parameters:
  `fn` `<Function>` 延迟执行的函数。
  `when` `<Number>` 延迟时间，单位是毫秒。
  `periodic` `<Boolean>` 是不是周期性执行。默认为 false.
  `o` `<Object>` 环境对象。
  `data` `<Array>` 传递的参数。可以为单个对象，最后会转换成数组，依次传递给执行函数。

Returns: `Object`
  timer 对象。拥有 id 和 interval 属性，还有 cancel 方法，用于取消定时器。

    var S = KISSY;

    S.later(function(data) {
        S.log(data);
    }, 0, false, null, 'I am later data.');

#### clone `Object|Array clone ( o )`

创建一个普通对象或数组的深拷贝, 并且返回。

其他类型原样返回。

Parameters:
  `o` `<Object|Array>` 待深拷贝的对象或数组。

Returns: `Object|Array`

#### now `Number now ( )`

返回 new Date().getTime()

#### globalEval `void globalEval ( data )`

在全局环境里执行代码片段。

    var S = KISSY;

    S.globalEval('var foo = 1;');
    S.log(window['foo']); // => 1

home › kissy › lang :