[英]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.