1 回答
TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您查看MDN 文檔,getOwnPropertyDescriptor它在第一段中指出,只有直接存在于對(duì)象上的屬性才會(huì)返回有效的屬性描述符。因此,如果屬性是 a) 在對(duì)象原型(或其原型,遞歸)上定義或 b) 在本機(jī)代碼中定義,則它不會(huì)返回有效的屬性描述符。這最有可能是這種情況globalThis。
Object.getOwnPropertyDescriptor() 方法返回給定對(duì)象的自有屬性(即直接存在于對(duì)象上而不是在對(duì)象原型鏈中的屬性描述符)的屬性描述符。
正如 @52d6c6af 在注釋中指出的,具有 ID 的 DOM 元素是在 WindowProperties 對(duì)象上定義的,該對(duì)象是窗口對(duì)象原型鏈的一部分。
console.log(Object.getOwnPropertyDescriptor(window.__proto__.__proto__,?'foo'))
<div?id="foo"></div>
另外,根據(jù)經(jīng)驗(yàn)。不要使用globalThis或window訪問(wèn) DOM 元素。使用getElementById或querySelector.
const foo0 = globalThis.foo;
const foo1 = document.getElementById('foo');
const foo2 = document.querySelector('#foo');
console.log(foo0 === foo1, foo1 === foo2);
<div id="foo"></div>
- 1 回答
- 0 關(guān)注
- 184 瀏覽
添加回答
舉報(bào)
