Object.getOwnPropertyDescriptor()

admin發表於2018-09-08

物件的屬性通常是用來描述物件的相關特性。

程式碼例項如下:

[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);
}

程式碼執行截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/08/004201jdd4viid48fnzqdi.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到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);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/08/004311q80a9h93wa9otmth.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面程式碼可以獲取webName屬性的特性:

(1).configurable屬性值為true,說明屬性是可以被配置的。

(2).enumerable屬性值為true,說明屬性是可以被列舉的。

(3).value屬性值為"螞蟻部落",說明屬性值是"螞蟻部落"。

(4).writable屬性值為true,說明說明是可讀寫的。