一尘不染

获取所有用户定义的窗口属性?

javascript

有没有办法找出JavaScript中所有用户定义的窗口属性和变量(全局变量)?

我试过了,console.log(window)但名单是无止境的。


阅读 275

收藏
2020-05-01

共1个答案

一尘不染

您需要自己完成工作。在可能的第一时间阅读所有属性。从那时起,您可以将属性列表与静态列表进行比较。

var globalProps = [ ];

function readGlobalProps() {
    globalProps = Object.getOwnPropertyNames( window );
}

function findNewEntries() {
    var currentPropList = Object.getOwnPropertyNames( window );

    return currentPropList.filter( findDuplicate );

    function findDuplicate( propName ) {
        return globalProps.indexOf( propName ) === -1;
    }
}

所以现在,我们可以像

// on init
readGlobalProps();  // store current properties on global object

然后

window.foobar = 42;

findNewEntries(); // returns an array of new properties, in this case ['foobar']

当然,这里需要说明的是,您只能在脚本能够最早调用它的时候“冻结”全局属性列表。

2020-05-01