first
This commit is contained in:
40
extensions/app/assets/lib/debug/debug.ts
Normal file
40
extensions/app/assets/lib/debug/debug.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { DEBUG, DEV } from 'cc/env';
|
||||
|
||||
function jsGetSet(obj: unknown, prop: string, getter: Function, setter?: Function) {
|
||||
Object.defineProperty(obj, prop, {
|
||||
get: getter as any,
|
||||
set: setter as any,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
});
|
||||
}
|
||||
function clear(object: Record<string | number, any>) {
|
||||
if (!object) return;
|
||||
for (const key of Object.keys(object)) {
|
||||
delete object[key];
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 将某个变量设置为不可观测(不可在浏览器中打印)
|
||||
* @param owner object | string | number | boolean | Array | Function | ...
|
||||
* @param callback 被观测时触发回调
|
||||
* @returns
|
||||
*/
|
||||
export function unobservable(owner: unknown, callback?: Function) {
|
||||
if (DEV || DEBUG) return;
|
||||
if (!owner) return;
|
||||
function define() {
|
||||
function accessor() {
|
||||
if (callback) {
|
||||
callback();
|
||||
} else {
|
||||
clear(owner);
|
||||
}
|
||||
}
|
||||
try {
|
||||
jsGetSet(owner, 'unobservable', accessor.bind(null, 'de' + 'bu' + 'gg' + 'er'));
|
||||
}
|
||||
catch (e) { !0; }
|
||||
}
|
||||
define();
|
||||
}
|
||||
9
extensions/app/assets/lib/debug/debug.ts.meta
Normal file
9
extensions/app/assets/lib/debug/debug.ts.meta
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"ver": "4.0.24",
|
||||
"importer": "typescript",
|
||||
"imported": true,
|
||||
"uuid": "c0d5da3b-23f0-400e-85bb-6c754b9c08eb",
|
||||
"files": [],
|
||||
"subMetas": {},
|
||||
"userData": {}
|
||||
}
|
||||
Reference in New Issue
Block a user