UNPKG

@darwish/utils-core

Version:

34 lines (33 loc) 989 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Check if the given object is a proxy object * @param obj any * @returns boolean */ function isProxy(obj) { if (!obj || (typeof obj !== "object" && typeof obj !== "function")) { return false; // 非对象或函数返回 false } try { var randomProperty = Symbol("test"); Object.defineProperty(obj, randomProperty, { get: function () { return true; }, }); if (obj[randomProperty] === true) { // 尝试删除定义的属性,如果失败则很可能是 Proxy delete obj[randomProperty]; if (obj[randomProperty] === true) { return false; // 如果删除成功,说明不是 Proxy } } return true; } catch (e) { // 如果操作抛出错误,很可能是 Proxy return true; } } exports.default = isProxy;