第一:字面量對象的方法,支持縮寫形式
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']);