var anObject = {}; //一個對象<br /> anObject.aProperty = "Property of object"; //對象的一個屬性<br /> anObject.aMethod = function(){alert("Method of object")}; //對象的一個方法<br /> //主要看下面:<br /> alert(anObject["aProperty"]); //可以將對象當數組以屬性名稱作為下標來訪問屬性<br /> anObject["aMethod"](); //可以將對象當數組以方法名作為下標來調用方法<br /> for( var s in anObject) //遍曆對象的所有屬性和方法進行迭代化處理<br /> alert(s + " is a " + typeof(anObject[s]));<br />
同樣對於function類型的對象也是一樣:
var aFunction = function() {}; //一個函數<br /> aFunction.aProperty = "Property of function"; //函數的一個屬性<br /> aFunction.aMethod = function(){alert("Method of function")}; //函數的一個方法<br /> //主要看下面:<br /> alert(aFunction["aProperty"]); //可以將函數當數組以屬性名稱作為下標來訪問屬性<br /> aFunction["aMethod"](); //可以將函數當數組以方法名作為下標來調用方法<br /> for( var s in aFunction) //遍曆函數的所有屬性和方法進行迭代化處理<br /> alert(s + " is a " + typeof(aFunction[s]));<br />
是的,對象和函數可以象數組一樣,用屬性名稱或方法名作為下標來訪問並處理。那麼,它到底應該算是數組呢,還是算對象?
我們知道,數組應該算是線性資料結構,線性資料結構一般有一定的規律,適合進行統一的批量迭代操作等,有點像波。而對象是離散資料結構,適合描述分散的和個人化的東西,有點像粒子。因此,我們也可以這樣問:JavaScript裡的對象到底是波還是粒子?
如果存在對象量子論,那麼答案一定是:波粒二象性!