Teal TealUI

函数扩展util/function

提供 JavaScript 内置对象 Function 的扩展接口。

API

函数 描述
empty()():void

空函数。

返回值

类型:void

空函数。

self(value)<T>(value:T):T

始终返回第一个参数值的函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
value* T

返回值

类型:T

返回值。

始终返回第一个参数值的函数。

from(value)<T>(value:T):function

创建一个始终返回指定值的函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
value* T

返回值

类型:() => T

返回一个新函数,该函数始终返回指定值。

示例

from(false)() // false

创建一个始终返回指定值的函数。

isFunction(obj)(obj:any):boolean

判断对象是否是函数。

参数 类型 描述 默认值
obj* any

返回值

类型:boolean

如果对象是函数则返回 true,否则返回 false。

示例

isFunction(function () {}) // true
isFunction(null) // false
isFunction(new Function()) // true

判断对象是否是函数。

concat(...)<T>(...funcs:T[]):T

创建一个新函数,调用该函数后会依次调用所有原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
funcs T[]

返回值

类型:T

返回一个新函数。该函数无返回值。

示例

concat(function (){}, function (){})()

创建一个新函数,调用该函数后会依次调用所有原函数。

repeat(fn, ...)<T>(fn:T, count?:number):function

创建一个新函数,调用该函数后,重复调用原函数指定次数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
count number 0

返回值

类型:(this: any) => void

返回一个新函数。

示例

repeat(()=> console.log("hello"), 3)() // 输出 3 个 hello

创建一个新函数,调用该函数后,重复调用原函数指定次数。

once(fn)<T>(fn:T):T

创建一个新函数,仅在第一次调用该函数时调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T

返回值

类型:T

返回一个新函数。

创建一个新函数,仅在第一次调用该函数时调用原函数。

before(fn, count)<T>(fn:T, count:number):T

创建一个新函数,多次调用该函数时,仅在第一次调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
count* number

返回值

类型:T

返回一个新函数。

示例

var done = before(() => console.log("hello"), 2);
done();  // 输出 hello
done();  // 不输出

创建一个新函数,多次调用该函数时,仅在第一次调用原函数。

after(fn, count)<T>(fn:T, count:number):T

创建一个新函数,多次调用该函数时,仅在最后一次调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
count* number

返回值

类型:T

返回一个新函数。

示例

var done = after(() => console.log("hello"), 2);
done();  // 不输出
done();  // 输出 hello

创建一个新函数,多次调用该函数时,仅在最后一次调用原函数。

limit(fn, ...)<T>(fn:T, timeout?:number):function

创建一个新函数,在指定时间内多次调用该函数时,仅在第一次调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
timeout number 0

返回值

类型:(this: any) => any

返回一个新函数。

创建一个新函数,在指定时间内多次调用该函数时,仅在第一次调用原函数。

cache(fn)<T>(fn:T):T

创建一个新函数,多次调用该函数时,仅在参数发生变化后调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T

返回值

类型:T

返回一个新函数。

创建一个新函数,多次调用该函数时,仅在参数发生变化后调用原函数。

delay(fn, ...)<T>(fn:T, timeout?:number):T

创建一个新函数,调用该函数后,延时调用原函数。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
timeout number 0

返回值

类型:T

返回一个新函数。

示例

delay(() => console.log("延时执行"), 100)()

创建一个新函数,调用该函数后,延时调用原函数。

defer(fn, ...)<T>(fn:T, duration?:number):T

创建一个新函数,调用该函数后,延时调用原函数。如果在延时等待期间有新的调用,则重新开始计时。

泛型参数 约束类型 默认类型
T
参数 类型 描述 默认值
fn* T
duration number 0

返回值

类型:T

返回一个新函数。

示例

document.onscroll = defer(() => console.log("延时执行"), 100);

创建一个新函数,调用该函数后,延时调用原函数。如果在延时等待期间有新的调用,则重新开始计时。

interval(fn, ...)(fn:function, count?:number, timeout?:number):void

创建一个新函数,调用该函数后每隔指定时间调用一次原函数。

参数 类型 描述 默认值
fn* (count: number) => boolean | void
count number -1
timeout number 0

返回值

类型:void

示例

interval(function (a) { console.log(a) }, 10, 400)

创建一个新函数,调用该函数后每隔指定时间调用一次原函数。

tryThese(...)(...funcs:Function[]):any

依次执行多个函数,如果函数没有发生异常则返回,否则继续执行下一个函数。

参数 类型 描述 默认值
funcs Function[]

返回值

类型:any

返回第一个未发生异常的函数的返回值。如果所有函数都发生异常则返回 undefined。

示例

var xhr = tryThese(() => new ActiveXObject("Microsoft.XMLHttp"), () => new XMLHttpRequest())

依次执行多个函数,如果函数没有发生异常则返回,否则继续执行下一个函数。

getSource(fn)(fn:Function):string

获取函数不含参数部分的源码。

参数 类型 描述 默认值
fn* Function

返回值

类型:string

返回源码。根据执行环境的不同,其中可能包含注释。

示例

getSource(x => x)

获取函数不含参数部分的源码。