了解一個JS物件的所有屬性和方法,獲得一個物件的所有屬性和方法,核心程式碼和原理如下:
function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+obj[name]+", "; } alert(names); }
如果知道這個物件的所有屬性自然就可以重新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 屬性不考慮原型鏈中的物件。
以上是javascript如何取得物件並複製物件實作用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!