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