是否可以检测所有非标准窗口属性?

时间:2017-04-06 20:57:31

标签: javascript browser

也就是说,我想检测库添加的所有全局属性,例如$, _, Backbone等。

1 个答案:

答案 0 :(得分:0)

不幸的是,我知道这样做的唯一方法就是window处于初始状态时的属性,并在感兴趣时将它们与window的属性进行比较。找到用户定义的那些。

这是一个肮脏的“黑客”,计算复杂度很高(O 2 ),但我认为还有其他办法。

// In the very beginning, before anything modifying window runs
const initialWindowProperties = Object.getOwnPropertyNames(window);

// Later
window.$ = undefined; // Dummy window property addition

const getUserDefinedWindowProperties = () => {
  const windowProperties = Object.getOwnPropertyNames(window);
  return windowProperties.filter(
    (property) => !initialWindowProperties.includes(property)
  );
}

console.log(getUserDefinedWindowProperties());
/* Output console formatting */
.as-console-wrapper { max-height: auto; top: 0; }