ES5給出的兩個新增的語法糖getter和setter介紹


前言信息

    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后面的命名很隨意 但必須保持一致

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM