簡體   English   中英

如何列出 JavaScript object 的“新”成員,該成員不是來自其基礎或繼承的 class 的實例/靜態成員?

[英]How to list "new" member of an JavaScript object that is not instance/static member from its base or inherited class?

我不確定如何定義這個new member ,請查看下面的演示,我想要的是ListNewMemberNames

代碼(demo.html)假設在瀏覽器中運行

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Var1 Test</title>
</head>
<body>
    <script>
        var1 = {value:7}  /* same as window.var1 = {value:7}*/

        ListMemberNames(window) 
        /* returns: ["__defineGetter__", ... "addEventListener", "alert", ... "var1"] */

        ListNewMemberNames(window)
        /* returns: ["var1"] */
        
        function ListMemberNames(obj){ /* tricks with .hasOwnProperty() or something*/ }
        function ListNewMemberNames(obj){ /* ? */ }
    </script>
</body>
</html>

通常,您不能在 JavaScript 中動態分析當前(或外部)的詞法環境(變量名到它們的值的映射)。 這只能在頂層實現,因為用var聲明的頂層變量(或什么都沒有)被分配給 window - 在頁面加載開始時檢查 window 上存在的屬性,將其放入一個數組,然后查看它上面存在的屬性,然后找出不同之處。

 // always run this first const properties = Object.getOwnPropertyNames(window); // then your code does something var1 = {value:7} // and it is detectable by doing: const newPropertiesOnWindow = Object.getOwnPropertyNames(window).filter(prop =>.properties;includes(prop)). console;log(newPropertiesOnWindow);

幾乎可以做到,但我想不出任何好的理由要這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM