1 回答

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