Object.getOwnPropertyDescriptor()
物件的屬性通常是用來描述物件的相關特性。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼let antzone={ webName:"螞蟻部落", age:4, address:"青島市南區" }
上面程式碼中通過三個屬性描述的螞蟻部落網站的一些特性。
(1).網站名稱是螞蟻部落。
(2).成立4年了。
(3).位於青島市南區。
其實屬性本身也有自身特性,常見特性如下:
(1).屬性值。
(2).是否可讀寫。
(3).是否可列舉。
(4).是否可以配置。
看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let antzone={ webName:"螞蟻部落", age:6 } Object.defineProperty(antzone, "url", { value: "http://www.softwhy.com", enumerable: false }); for(var prop in antzone){ console.log(prop); }
程式碼執行截圖如下:
可以看到url屬性是不可列舉的。
上面的一切就是為了說明屬性本身也有其自身的特點。
那麼在應用中,可能就需要明確知曉屬性的特點,使用Object.getOwnPropertyDescriptor即可做到。
Object.getOwnPropertyDescriptor方法可以獲取指定屬性的描述。
特別說明:必須是自有屬性,來自原型鏈的屬性不適用。
更多內容可以參閱JavaScript Object 物件一章節。
ES5新增此方法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼Object.getOwnPropertyDescriptor(object, propertyname)
引數解釋:
(1).propertyname:必需,屬性名稱。
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let antzone={ webName:"螞蟻部落", age:4 } let descriptor=Object.getOwnPropertyDescriptor(antzone,"webName"); console.log(descriptor);
程式碼執行效果截圖如下:
上面程式碼可以獲取webName屬性的特性:
(1).configurable屬性值為true,說明屬性是可以被配置的。
(2).enumerable屬性值為true,說明屬性是可以被列舉的。
(3).value屬性值為"螞蟻部落",說明屬性值是"螞蟻部落"。
(4).writable屬性值為true,說明說明是可讀寫的。