Object.getOwnPropertyDescriptor()
靜態方法 Object.getOwnPropertyDescriptor() 返回一個描述給定物件上特定屬性的配置的物件(即,直接存在於物件上,不在物件的原型鏈上的屬性)。返回的物件是可變的,但修改它不會影響原始屬性的配置。
試一試
const object = {
foo: 42,
};
const descriptor = Object.getOwnPropertyDescriptor(object, "foo");
console.log(descriptor.configurable);
// Expected output: true
console.log(descriptor.value);
// Expected output: 42
語法
js
Object.getOwnPropertyDescriptor(obj, prop)
引數
返回值
如果給定屬性存在於物件上,則返回該屬性的屬性描述符,否則返回 undefined。
描述
此方法允許檢查屬性的精確描述。JavaScript 中的屬性由一個字串值名稱或一個 Symbol 和一個屬性描述符組成。有關屬性描述符型別及其屬性的更多資訊,請參見 Object.defineProperty()。
屬性描述符是一個包含以下部分或全部屬性的記錄:
示例
使用 Object.getOwnPropertyDescriptor()
js
let o, d;
o = {
get foo() {
return 17;
},
};
d = Object.getOwnPropertyDescriptor(o, "foo");
console.log(d);
// {
// configurable: true,
// enumerable: true,
// get: [Function: get foo],
// set: undefined
// }
o = { bar: 42 };
d = Object.getOwnPropertyDescriptor(o, "bar");
console.log(d);
// {
// configurable: true,
// enumerable: true,
// value: 42,
// writable: true
// }
o = { [Symbol.for("baz")]: 73 };
d = Object.getOwnPropertyDescriptor(o, Symbol.for("baz"));
console.log(d);
// {
// configurable: true,
// enumerable: true,
// value: 73,
// writable: true
// }
o = {};
Object.defineProperty(o, "qux", {
value: 8675309,
writable: false,
enumerable: false,
});
d = Object.getOwnPropertyDescriptor(o, "qux");
console.log(d);
// {
// value: 8675309,
// writable: false,
// enumerable: false,
// configurable: false
// }
非物件強制型別轉換
在 ES5 中,如果此方法的第一個引數不是物件(原始型別),它將導致 TypeError。在 ES2015 中,第一個引數為非物件時,首先會被強制轉換為物件。
js
Object.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not an object // ES5 code
Object.getOwnPropertyDescriptor("foo", 0);
// Object returned by ES2015 code: {
// configurable: false,
// enumerable: true,
// value: "f",
// writable: false
// }
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-object.getownpropertydescriptor |
瀏覽器相容性
載入中…