1. 程式人生 > >es6 對象的擴展

es6 對象的擴展

hello create cti turn 奇怪 是不是 字符 foo 瀏覽器

一、現在還有很多瀏覽器不能直接使用es6語法。特別是手機端的一些低版本的瀏覽器。都需要用bale轉換一下。

但是目前流行的框架中(vue,react,angular)。都有自己的腳手架,都能用webpack轉換下。或者直接自己配置webpack , fis3,nowa 等轉換。

照樣不是美滋滋。

二、屬性的簡潔寫法 

//1.屬性簡潔表示語法
        var foo = ‘bar‘;
        var obj = {foo};
        console.log(obj);
        //創建對象的函數
        function createOjb(x = 1,y = 1){  //
x = 1, y = 1; 參數的默認值 return { x,y } } var newObj = createOjb(); console.log(newObj); //{x:1,y:1} var birthDate = ‘2017/8/12‘ //2 方法的簡寫 var person = { name:‘綠巨人‘, age:‘200歲‘, birthDate, say(){ console.log(
this.name); //等同於 say:function(){ console.log(this.name)}; } } person.say(); // 綠巨人 //in 方法 var msg = { hello:‘helloValue‘, world:‘worldValue‘ } console.log(‘hello‘ in msg,‘helloValue‘ in msg); // true,false; => 判斷某個鍵值是在某個對象裏面
//commonJS 模塊化輸出 function Obj(methods){ this.methods = methods || {}; } Obj.prototype.getItem = function(key){ return key in this.methods ? methods[key] : null; } Obj.prototype.setItem = function(key,value){ this.methods[key] = value; } var obj = new Obj(); //module.exports = {obj}; //4.註意點 :簡潔寫法的屬性名總是字符串,這會導致一些看上去比較奇怪的結果。

三、屬性表達式

//屬性名表達式
         // 1. 對象添加屬性的兩種方式
         var newObj = new Object();
         newObj.name = ‘html‘;
         newObj[‘age‘] = ‘20歲‘;
         //對象字面量的方式  se5 中字面量方式下 屬性名字只能用 字符串形式。不能用 [‘name‘]
         var newObj1 = {
            name:‘css‘,
            age:‘30歲‘
         }
         //SE6
         var newObj2 = {
            [‘name‘]:‘js‘,
            [‘a‘ + ‘ge‘]:‘40歲‘,
            [‘hello world‘]:‘say hello world‘,
            [‘say‘ + ‘ hi‘](){
                console.log(this[‘hello world‘])
            }
         }
         console.log(newObj2.name); // jss
         console.log(newObj2[‘hello world‘]);  // say hello world
         newObj2[‘say hi‘](); // say hello world
         //!!!註意  屬性名表達式是不能喝屬性簡寫一起使用的
         var objKey = {a:1};
         var newObj3 = {
            [objKey]:‘我是一個對象‘
         }
         console.log(newObj3);  // {[object object]:‘我是一對象‘}
         console.log(newObj3[{a:1}]); // 我是一個對象  
         console.log(newObj3[‘object object‘]); // undefined  是不是很奇怪啊

es6 對象的擴展