標籤:
Javascript的單一資料型別包括: 數字,字串,true/false,null 和undefined。 其他所有值都是對象. 數組是對象,方法也是對象。屬性值是除開undefined值以外的任何值。JavaScript的屬性是可以變的。和C#的dynamic差不多,動態類.
一. 對象聲明以及初始化.
Notes: 1.屬性包含"-"和" "時候需要加上引號,對於"_"不需要加引號
var stooge={ "first Name":"Frank", "last Name":"Zhang" }var person ={ name:"Frank", Age:23, }
二.檢索.
Notes: 1. 在檢索對象的值可以通過[]和. 來擷取.
2. 如果在賦值的時候,該屬性不存在。那麼會自動建立該屬性並賦值.
3. 檢索中如果.propertyName不存在將輸出undefine;
4. 擷取undefine, null 資料的.PropertyName 將會報錯, 如果資料是非undefine和非null的將不會報錯.即使是賦值的數字.
console.log(person.name); stooge["middle Name"]="C"; //屬性不存在,重新建立該屬性 console.log("My full name is "+stooge["first Name"]+"."+stooge["middle Name"]+"."+stooge["last Name"]); //Frank.C.Zhang
console.log(person.vip); //不報錯,輸出undefine try{ console.log("test"+person.Vip.Msg); // .vip未聲明,然後擷取.msg對象就會報錯 }catch(ex){ console.log(ex.message); // 輸出Cannot read property ‘Msg‘ of undefined } person.Vip = null; try{ console.log("test"+person.Vip.Msg); // .vip未聲明,然後擷取.msg對象就會報錯 }catch(ex){ console.log(ex.message); // 輸出Cannot read property ‘Msg‘ of null } person.Vip = 1; try{ console.log(person.Vip.Msg); // 輸出undefine }catch(ex){ console.log(ex.message); }
三. 反射
console.log(person.hasOwnProperty("name")); //true console.log(typeof(person.Age)); //number console.log(typeof(person.toString)); //function
四.遍曆
Notes: 1.遍曆對象的時候,name是對應的屬性名稱.而不是屬性值;
2. 擷取屬性值還是要通過[]和.擷取;
for(var name in stooge){ console.log(name); console.log(typeof(name)); console.log(stooge[name]); console.log(typeof(stooge[name])); }
五.刪除.
Notes: 1.刪除屬性通過delete obj.propertyName刪除.
六. 局部類
Notes: 前面的類我們都是用的全域變數,全域變數用的過多會降低程式的靈活性, 以及開發中會遇到命名重複的問題. 在C#中有命名空間,在Java中也有package,其實在JavaScript我們可以通過命名一個對象。然後將自己特定的資料封裝到對象中。來達到隔離效果。
var MyNamespace ={}; MyNamespace.person ={ name:"Frank", Age:23 } console.log(MyNamespace.person.name);
Javascript筆記--Objects