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高級程序設計(第3版)高清完整PDF中文+英文+源碼 http://www.linuxidc.com/Linux/2014-09/107426.htm
如何使用JavaScript書寫遞歸函數 http://www.linuxidc.com/Linux/2015-01/112000.htm
JavaScript核心概念及實踐 高清PDF掃描版 (邱俊濤) http://www.linuxidc.com/Linux/2014-10/108083.htm
理解JavaScript中的事件流 http://www.linuxidc.com/Linux/2014-10/108104.htm