Object.defineProperties()
Object.defineProperty方法一次只能為物件新增或者修改一個屬性。
在實際應用中,可能需要進行批量操作,Object.defineProperties可以實現。
使用方法基本與Object.defineProperty方法相同。
關於Object.defineProperty可以參閱Object.defineProperty()一章節。
更多Object物件內容參閱JavaScript Object 物件一章節。
ES5新增此方法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼object.defineProperties(object, descriptors)
引數解析:
(1).object:必需,要新增或者修改屬性的物件。
(2).descriptors:必需,一個物件直接量,用來設定資料屬性或訪問器屬性的特性,與Object.defineProperty方法不同的是,它既可以設定或者修改一個屬性,也可以是多個屬性。
特別說明:此方法的返回值是就是傳遞給此方法的object物件。
關於資料屬性或者訪問器屬性可以參閱如下兩篇文章:
(1).資料屬性參閱configurable、enumerable和writable一章節。
(2).訪問器屬性參閱JavaScript get與set訪問器屬性一章節。
瀏覽器支援:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).opera瀏覽器支援此方法。
(6).safria瀏覽器支援此方法。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let obj = { webName:"螞蟻部落", url:"softwhy.com" }; Object.defineProperties(obj,{ address:{ value:"青島市南區", writable:true, numerable:true, configurable:true }, age:{ value:2, writable:true, numerable:true, configurable:true } }); console.log(obj.address); console.log(obj.age);
程式碼執行效果截圖如下:
上面的程式碼可以為obj物件新增address和age屬性。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let obj = { webName:"螞蟻部落", url:"softwhy.com" }; Object.defineProperties(obj,{ address:{ value:"青島市南區", writable:true, numerable:true, configurable:true }, age:{ set:function(x){ this._age=x; }, get:function(){ return "螞蟻部落已經建立"+this._age+"年了"; }, enumerable:true, configurable:true } }); obj.age=3; console.log(obj.age);
程式碼執行效果截圖如下:
為obj物件新增address和age屬性,並且為age屬性設定get和set屬性訪問器。