[js高手之路] es6系列教程 - 對象功能擴展詳解


第一:字面量對象的方法,支持縮寫形式

1         //es6之前,這么寫
2         var User = {
3             name : 'ghostwu',
4             showName : function(){
5                 return this.name;
6             }
7         };
8         console.log( User.showName() );
1         //有了es6之后,這么寫
2         let User = {
3             name : 'ghostwu',
4             showName (){
5                 return this.name;
6             }
7         };
8         console.log( User.showName() );

方法縮寫規則: 在原來的基礎上去掉 冒號 和 function關鍵字

第二:對象中的屬性與變量名或者參數 同名的時候, 可以省略賦值的操作

1         //參數與屬性同名
2         let User = function( name, age ){
3             return {
4                 name : name,
5                 age : age
6             }
7         };
8         let oUser = User( 'ghostwu', 22 );
9         console.log( oUser.name, oUser.age );

上面例子中的寫法,可以簡寫為:

1         let User = function( name, age ){
2             return {
3                 name, //省略name的賦值, 會在作用域中查找同名的name變量或者參數
4                 age //省略age的賦值,會在作用域中查找同名的age變量或者參數
5             }
6         };
7         let oUser = User( 'ghostwu', 22 );
8         console.log( oUser.name, oUser.age );
1         let User = function(){
2             let name = 'ghostwu', age = 26;
3             return {
4                 name, //查找到同名變量name,賦值給name屬性
5                 age   //查找到同名變量age,賦值給age屬性
6             }
7         };
8         let oUser = User();
9         console.log( oUser.name, oUser.age );
1         let User = function(){
2             let name = 'ghostwu', age2 = 26;
3             return {
4                 name,
5                 age //當沒有同名變量或者參數時,省略寫法會報錯 
6             }
7         };
8         let oUser = User();
9         console.log( oUser.name, oUser.age );
1             let User = function( name, age ){//形參相當於var name, var age
2             let name = 'ghostwu', age = 26;//let不能重定義, 報錯
3             return {
4                 name,
5                 age
6             }
7         };
8         let oUser = User( 'zhangsan', 20 );
9         console.log( oUser.name, oUser.age );

如果同時出現同名參數和let定義的同名變量時候,會報語法錯誤,如果不知道為什么,請看下我之前寫的博客文章: 

[js高手之路] es6系列教程 - var, let, const詳解

第三:可計算屬性名, 即: 屬性名支持表達式參與運算

1          let User = {};
2         let lastName = "last Name";
3 
4         User['first Name'] = 'ghost';
5         User[lastName] = 'wu'; //lastName被解釋為last name, 從而等價於User['last Name'] = 'wu'
6         console.log( User['first Name'] , User['last Name'] );
1         let User = {
2             "full Name" : "ghostwu",
3             //  first Name : "ghostwu" //屬性名包含空格或者特殊符號要用引號或者轉義處理,否則報錯
4         };
5         console.log( User['full Name'] );
 1         let firstName = 'first name';
 2         let lastName = 'last name';
 3         //屬性名如果用中括號括起來,屬性名就被解釋成了變量
 4         let User = {
 5             [firstName] : 'ghost', 
 6             [lastName] : 'wu',
 7         };
 8 
 9         console.log( User['firstName']); //undefined
10         console.log( User['lastName']); //undefined
11         console.log( User['first name']); //ghost
12         console.log( User['last name']); //wu

用中括號把屬性括起來,屬性就變成了變量,變量就可以用操作符組合成表達式,參與運算,所以叫計算表達式

1         let suffix = ' Name';
2         let User = {
3             ['first' + suffix] : 'ghost',
4             ['last' + suffix] : 'wu',
5         };
6         console.log( User['first Name'], User['last Name']);

 


免責聲明!

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



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