在js中如何復制一個對象,例如如下一個js對象。
如果知道這個對象的所有屬性自然就可以重新new一個,然后對每個屬性賦值,就可以做到,但如果不知道呢?如何創建一個內容相同 的對象呢?
~~~
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];
}
~~~
其實這種方式有一定的限制,關鍵是js中for in有一定限制,并不會遍歷對象的所有屬性,只會遍歷可枚舉的屬性,由js核心定義的方法都是不可枚舉的,例如tostring(),但代碼中定義的屬性都是可枚舉的(可以通過特殊定義為不可枚舉的)。因此這個方法就夠用了。
一個對象是否可以進行for in窮舉,我們可以通過propertyIsEnumerable屬性來判斷,說明如下:
propertyIsEnumerable 屬性
返回 Boolean 值,指出所指定的屬性是否為一個對象的一部分以及該屬性是否是可列舉的。
object.propertyIsEnumerable(proName)
參數
object
必選項。一個對象。
proName
必選項。一個屬性名稱的字符串值。
說明
如果 proName 存在于 object 中且可以使用一個 For…In 循環窮舉出來,那么 propertyIsEnumerable 屬性返回 true。如果 object 不具有所指定的屬性或者所指定的屬性不是可列舉的,那么 propertyIsEnumerable 屬性返回 false。典型地,預定義的屬性不是可列舉的,而用戶定義的屬性總是可列舉的。
propertyIsEnumerable 屬性不考慮原型鏈中的對象。
- 前言
- js封裝和作用域
- 封裝html的select標簽的js操作
- js正則表達式的使用
- 使用閉包對setTimeout進行簡單封裝
- js中如何復制一個對象,如何獲取所有屬性和屬性對應的值
- js中如何把字符串轉化為對象
- js操作iframe兼容各種瀏覽器
- js模板方法的思路及實現
- 在js中如何實現方法重載?以及函數的參數問題
- 單純的html頁面如何提交,傳遞參數,以及對身份的驗證
- ajax如何調試
- js綜合應用簡單的表格統計
- js格式化貨幣數據
- js綜合應用:表格的四則運算
- 如何在瀏覽器中打開PDF文件并實現預覽的思路與代碼
- js實現幻燈片效果
- js實現幻燈片效果二
- jquery-easyui必填項隱藏問題的處理方案
- jquery-easyui隱藏可用不可用的問題的處理方案
- js變量作用域--變量提升