@whitesev/utils
Version:
一个常用的工具库
60 lines (58 loc) • 1.5 kB
text/typescript
import type { WindowApiOption } from "./types/WindowApi";
export class WindowApi {
/** 默认的配置 */
private defaultApi: Required<WindowApiOption> = {
document: document,
window: window,
globalThis: globalThis,
self: self,
top: top!,
setTimeout: globalThis.setTimeout.bind(globalThis),
setInterval: globalThis.setInterval.bind(globalThis),
clearTimeout: globalThis.clearTimeout.bind(globalThis),
clearInterval: globalThis.clearInterval.bind(globalThis),
};
/** 使用的配置 */
private api: Required<WindowApiOption>;
constructor(option?: WindowApiOption) {
if (option) {
if (option.globalThis == null) {
option.globalThis = option.window;
}
if (option.self == null) {
option.self = option.window;
}
}
if (!option) {
option = Object.assign({}, this.defaultApi);
}
this.api = Object.assign({}, option as Required<WindowApiOption>);
}
get document() {
return this.api.document;
}
get window() {
return this.api.window;
}
get globalThis() {
return this.api.globalThis;
}
get self() {
return this.api.self;
}
get top() {
return this.api.top;
}
get setTimeout() {
return this.api.setTimeout;
}
get setInterval() {
return this.api.setInterval;
}
get clearTimeout() {
return this.api.clearTimeout;
}
get clearInterval() {
return this.api.clearInterval;
}
}