前言信息:
EMCAScript5 簡稱ES5 ECMAScript是一種由Ecma國際(前身為歐洲計算機制造商協會,英文名稱是European Computer Manufacturers Association)
語法糖(Syntactic sugar),也譯為糖衣語法,是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會。
沒有這兩個語法糖(getter 和 setter 叫 讀寫器)之前:
比如有一個人, 有 name age 和 gender
暫時只考慮 age ,給age做個限制,不允許賦值為負數,如果負數則不初始化,並打印一個警告
1 var o = (function(){ 2 var age = 0; 3 return { 4 get_age:function(){ 5 return age; 6 }, 7 set_age:function(v){ 8 // 在設置里加一個判斷 9 if(v<0){ 10 console.log("年齡不允許小於0") 11 }else{ 12 age = v; 13 } 14 } 15 } 16 })(); 17 console.log(o.get_age()); 18 o.set_age(12); 19 console.log(o.get_age());
這樣寫 完全符合我們的要求 但是程序員不滿足 其實我們這為了訪問這個屬性 但一直都是方法在訪問
程序員希望像訪問屬性一樣訪問
o.age 希望相當於o.get_age() o.age = 12; 希望相當於上述代碼中de o.set_age(12); console.log("o.get_age()")
語法
get 名字(){} set 名字(v){}
添加語法糖后:
1 var o = (function(){ 2 var age = 0; 3 return { 4 get age (){ 5 return age; 6 }, 7 set age (v){ 8 // 在設置里加一個判斷 9 if(v < 0){ 10 console.log("年齡不允許小於0"); 11 }else{ 12 age = v; 13 } 14 } 15 } 16 })(); 17 console.log(o.age); 18 o.age =12; 19 console.log(o.age);
這時 程序員就懷疑 .age 其實是給它自動的添加個屬性 對象o沒有這個屬性 .age就給它添加上了 那我們驗證下 到底是直接綁定的它 還是給它添加的屬性
語法糖給的福利 get和set后面的命名很隨意 但必須保持一致