在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ react和redux基礎(chǔ)的一個問題

react和redux基礎(chǔ)的一個問題

圖片描述

為什么
clipboard.png
這行代碼會等于

clipboard.png

怎么等于,return{}是一個對象吧,然后逗號隔開兩個??沒懂書的意思

回答
編輯回答
陌璃

...是對象擴展符
第二種寫法應(yīng)該這樣更直觀一些

return Object.assign({}, state, { counterCaption: ++state.counterCaption })
2018年7月17日 14:21
編輯回答
巷尾

該代碼于react redux無關(guān),實際上屬于ES6? 7 ?8 我根據(jù)你的代碼
babel 項目中 生成了一下代碼 你可以作為參考

let status = {
    counterCaption: 1,
    id :1
}
function aa() {

    return {...status, [counterCaption]: status[counterCaption]++}
 }
"use strict";

var _extends = Object.assign || 
function (target) { 
    for (var i = 1; i < arguments.length; i++) { 
        var source = arguments[i]; for (var key in source) { 
            if (Object.prototype.hasOwnProperty.call(source, key)) { 
            target[key] = source[key]; 
           } 
        }
    } 
    return target;
};

function _defineProperty(obj, key, value) { 
    if (key in obj) { 
        Object.defineProperty(obj, key, { 
            value: value, 
            enumerable: true, 
            configurable: true, 
            writable: true 
        }); 
    } else { 
        obj[key] = value; 
    } 
    return obj; 
}

var status = {
    counterCaption: 1,
    id: 1
};
function aa() {
    return _extends({}, 
    status, 
    _defineProperty({}, counterCaption, status[counterCaption]++));
}

轉(zhuǎn)為es5你可以看到 里面的 參數(shù)counterCaption被 _defineProperty函數(shù) 定義到一個空對象中,status也是一個對象
最終被 _extends函數(shù) 給擴展到一個新的對象去
你需要參考一下 阮一峰的 ES6入門 擴展運算符 和 解構(gòu)賦值

2018年6月12日 03:23
編輯回答
吃藕丑

這實際上是es6語法的問題 還是向樓上推薦你好好看看阮一峰老師的es6入門教程 http://es6.ruanyifeng.com/
同時解釋下這兩個語法
... 是結(jié)構(gòu)賦值的意思
例如
var a = {a:'123',b:'223'}
如果想講a中的屬性傳給另一個變量那么我們傳統(tǒng)的寫法是
var b = {a:a.a,b:b.b}
如果用結(jié)構(gòu)賦值 就直接 var b = {...a}就ok了

obj[content]是通過變量找到對象屬性
因為你如果直接使用.+變量名 他肯定直接找這個變量名的屬性
如果你用中括號找的就是這個變量對應(yīng)的值得屬性
舉個例子
var c = {d:1,e:2}
var e = 'd'
c.e //2
c[e] //1

2017年7月18日 00:22