js中如何復制一個對象并獲取其所有屬性和屬性對應的值
更新時間:2013年10月24日 09:26:04 作者:
如果知道這個對象的所有屬性自然就可以重新new一個,然后對每個屬性賦值,就可以做到,但如果不知道呢?如何創(chuàng)建一個內(nèi)容相同 的對象呢?下面有個不錯的示例,大家可以看看
在js中如何復制一個對象,例如如下一個js對象。
如果知道這個對象的所有屬性自然就可以重新new一個,然后對每個屬性賦值,就可以做到,但如果不知道呢?如何創(chuàng)建一個內(nèi)容相同 的對象呢?
var obj={ colkey: "col", colsinfo: "NameList" }
最簡單就是使用for in,
例如obj2就擁有了和obj完全相同的屬性
var obj2=new Object();
for(var p in obj)
{
var name=p;//屬性名稱
var value=obj[p];//屬性對應的值
obj2[name]=obj[p];
}
其實這種方式有一定的限制,關(guān)鍵是js中for in有一定限制,并不會遍歷對象的所有屬性,只會遍歷可枚舉的屬性,由js核心定義的方法都是不可枚舉的,例如tostring(),但代碼中定義的屬性都是可枚舉的(可以通過特殊定義為不可枚舉的)。因此這個方法就夠用了。
一個對象是否可以進行for in窮舉,我們可以通過propertyIsEnumerable屬性來判斷,說明如下:
propertyIsEnumerable 屬性
返回 Boolean 值,指出所指定的屬性是否為一個對象的一部分以及該屬性是否是可列舉的。
object.propertyIsEnumerable(proName)
參數(shù)
object
必選項。一個對象。
proName
必選項。一個屬性名稱的字符串值。
說明
如果 proName 存在于 object 中且可以使用一個 For…In 循環(huán)窮舉出來,那么 propertyIsEnumerable 屬性返回 true。如果 object 不具有所指定的屬性或者所指定的屬性不是可列舉的,那么 propertyIsEnumerable 屬性返回 false。典型地,預定義的屬性不是可列舉的,而用戶定義的屬性總是可列舉的。
propertyIsEnumerable 屬性不考慮原型鏈中的對象。
如果知道這個對象的所有屬性自然就可以重新new一個,然后對每個屬性賦值,就可以做到,但如果不知道呢?如何創(chuàng)建一個內(nèi)容相同 的對象呢?
復制代碼 代碼如下:
var obj={ colkey: "col", colsinfo: "NameList" }
最簡單就是使用for in,
例如obj2就擁有了和obj完全相同的屬性
復制代碼 代碼如下:
var obj2=new Object();
for(var p in obj)
{
var name=p;//屬性名稱
var value=obj[p];//屬性對應的值
obj2[name]=obj[p];
}
其實這種方式有一定的限制,關(guān)鍵是js中for in有一定限制,并不會遍歷對象的所有屬性,只會遍歷可枚舉的屬性,由js核心定義的方法都是不可枚舉的,例如tostring(),但代碼中定義的屬性都是可枚舉的(可以通過特殊定義為不可枚舉的)。因此這個方法就夠用了。
一個對象是否可以進行for in窮舉,我們可以通過propertyIsEnumerable屬性來判斷,說明如下:
propertyIsEnumerable 屬性
返回 Boolean 值,指出所指定的屬性是否為一個對象的一部分以及該屬性是否是可列舉的。
object.propertyIsEnumerable(proName)
參數(shù)
object
必選項。一個對象。
proName
必選項。一個屬性名稱的字符串值。
說明
如果 proName 存在于 object 中且可以使用一個 For…In 循環(huán)窮舉出來,那么 propertyIsEnumerable 屬性返回 true。如果 object 不具有所指定的屬性或者所指定的屬性不是可列舉的,那么 propertyIsEnumerable 屬性返回 false。典型地,預定義的屬性不是可列舉的,而用戶定義的屬性總是可列舉的。
propertyIsEnumerable 屬性不考慮原型鏈中的對象。
相關(guān)文章
JavaScript實現(xiàn)一個簡易的計算器實例代碼
這篇文章主要介紹了JavaScript實現(xiàn)一個簡易的計算器實例代碼,具有很好的參考價值,希望對大家有所幫助,一起跟隨小編過來看看吧2018-05-05ES6知識點整理之函數(shù)數(shù)組參數(shù)的默認值及其解構(gòu)應用示例
這篇文章主要介紹了ES6知識點整理之函數(shù)數(shù)組參數(shù)的默認值及其解構(gòu)應用,結(jié)合實例形式分析了ES6函數(shù)數(shù)組參數(shù)解構(gòu)賦值和默認值的設置相關(guān)操作技巧,需要的朋友可以參考下2019-04-04詳解在IDEA中將Echarts引入web兩種方式(使用js文件和maven的依賴導入)
這篇文章主要介紹了在IDEA中將Echarts引入web兩種方式(使用js文件和maven的依賴導入),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07