Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从元素中获取窗口属性 场地3 var arr=[] 用于(窗口中的变量i) { arr.push(一) } console.log(窗口中的“a”)//true console.log(arr)//没有属性a为什么?!_Javascript - Fatal编程技术网

Javascript 如何从元素中获取窗口属性 场地3 var arr=[] 用于(窗口中的变量i) { arr.push(一) } console.log(窗口中的“a”)//true console.log(arr)//没有属性a为什么?!

Javascript 如何从元素中获取窗口属性 场地3 var arr=[] 用于(窗口中的变量i) { arr.push(一) } console.log(窗口中的“a”)//true console.log(arr)//没有属性a为什么?!,javascript,Javascript,但是当我运行console.log(arr)时,我的数组中没有,为什么?这些属性不一定是窗口的“自有”属性,并且(这是有效位)不一定是可枚举的for in仅访问可枚举属性(“自己的”和继承的) 例如,在Chrome上,自动aglobal是window原型的一个属性,它被标记为不可枚举: var o=window; var where=“窗口” while(o&&!Object.getOwnPropertyDescriptor(o,“a”)){ where=“原型”+where; o=Objec

但是当我运行console.log(arr)时,我的数组中没有,为什么?

这些属性不一定是
窗口的“自有”属性,并且(这是有效位)不一定是可枚举的<代码>for in
仅访问可枚举属性(“自己的”和继承的)

例如,在Chrome上,自动
a
global是
window
原型的一个属性,它被标记为不可枚举:

var o=window;
var where=“窗口”
while(o&&!Object.getOwnPropertyDescriptor(o,“a”)){
where=“原型”+where;
o=Object.getPrototypeOf(o);
}
控制台日志(其中);
log(Object.getOwnPropertyDescriptor(o,“a”)
不一定是
窗口的“自有”属性,并且(这是有效位)不一定是可枚举的<代码>for in
仅访问可枚举属性(“自己的”和继承的)

例如,在Chrome上,自动
a
global是
window
原型的一个属性,它被标记为不可枚举:

var o=window;
var where=“窗口”
while(o&&!Object.getOwnPropertyDescriptor(o,“a”)){
where=“原型”+where;
o=Object.getPrototypeOf(o);
}
控制台日志(其中);
log(Object.getOwnPropertyDescriptor(o,“a”)

你到底想实现什么?我确实想得到a并将其推到arr中你想解决什么更高级别的问题?看看我的代码,如果你知道为什么arr没有元素“a”,这将是特定于浏览器的,规范只说“全局对象可能有其他主机定义的属性…”,作为全局对象一部分的命名元素由供应商决定,并且是由Microsoft多年前引入的,没有标准化,可以不同的实现你到底想实现什么?确切地说,我想得到a并将其推到arr中,你想解决什么更高级别的问题?看看我的代码,如果你知道为什么arr没有元素“a”,这将是特定于浏览器的,规格说明就是这么说的“全局对象可能有其他主机定义的属性…”,而作为全局对象一部分的命名元素则由供应商决定,并且是由Microsoft多年前引入的,没有标准化,可以通过不同的方式实现,那么为什么“a“是在原型窗口的原型中,而不是在窗口的原型中?@MankamentGra:根据上面的描述,它位于
窗口的原型上。我不知道,在这一点上,我们进入了实现细节,但是
窗口
非常复杂,从许多不同的地方获取东西,合并了,等等。我不奇怪发现它有三个层。好吧,那么为什么是“a”是在原型窗口的原型中,而不是在窗口的原型中?@MankamentGra:根据上面的描述,它位于
窗口的原型上。我不知道,在这一点上,我们进入了实现细节,但是
window
非常复杂,从许多不同的地方获取东西,合并了,等等。我并不惊讶地发现它有三层。
<body>
<h1 id="a">Site 3</h1>

<script>

var arr = []

for(var i in window)
{
    arr.push(i) 
}
console.log("a" in window)// true
console.log(arr)// dont have property a why?!
</script>

</body>