JavaScript怪癖 - 窗口

时间:2016-06-17 13:57:27

标签: javascript window key global-variables

我刚刚在Firefox Developer Edition 49.0a2(2016-06-17)中执行了以下代码块

let array1 = Object.keys(window);

let array2 = [];
for (let key in window) {
    array2.push(key);
};

/* filter for keys missing in Object.keys(window) */
array2.filter(function (e) {
   return !array1.includes(e); 
}).toString();

//result:
//"addEventListener,dispatchEvent,removeEventListener"

这种差异的原因是这些不是window的属性,因为可以使用window.hasOwnProperty(...)进行检查。我不明白的是:从那时起他们在哪里,因为我可以通过window.addEventListener等访问它们。为什么evalkeys之类的内容不在该列表中?

顺便说一句:keysObject.keys之间有什么区别?因为 Object.keys(window).toString() === keys(window).toString() //true

0 个答案:

没有答案