Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ecmascript 6 排列运算符在对象中不起作用。分配()_Ecmascript 6 - Fatal编程技术网

Ecmascript 6 排列运算符在对象中不起作用。分配()

Ecmascript 6 排列运算符在对象中不起作用。分配(),ecmascript-6,Ecmascript 6,我尝试使用spread操作符从旧对象填充新对象,而不复制旧对象的指针。但是新的对象出来时是空的( 这是我的密码: const obj = { a: 'a', b: 'b', c: 'c' }; const test1 = Object.assign({}, ...obj); const test2 = {}; console.log('obj', obj); console.log('test1', test1); console.log('test2', test2); te

我尝试使用spread操作符从旧对象填充新对象,而不复制旧对象的指针。但是新的对象出来时是空的(

这是我的密码:

const obj = {
  a: 'a',
  b: 'b',
  c: 'c'
};

const test1 = Object.assign({}, ...obj);
const test2 = {};

console.log('obj', obj);
console.log('test1', test1);
console.log('test2', test2);
test1
应在控制台中显示与
obj
相同的内容,但它是空的

我做错了什么?有没有其他方法不使用
Object.assign()

(也可以将其放在一个文件夹中。)

更新:

我试过:

const test = {...obj};
但我一直在传播的第一个点上得到意想不到的标记。它在JSBin中有效,但在我的本地上无效。所以我想我可能用Webpack或Babel做了一些不可靠的事情

这是我的
webpack.config.js

var path = require('path');

const DEV = process.env.NODE_ENV === 'dev';
const PROD = process.env.NODE_ENV === 'prod';

module.exports = {
    devtool: 'source-map',
    entry: './src/index.js',
    module: {
        loaders: [{
            test: /\.js$/,
            loaders: ['babel-loader'],
            exclude: /node_modules/
        },{
            test: /\.(png|jpg|gif)$/,
            loaders: ['url-loader'],
            exclude: /node_modules/
        },{
            test: /\.(css|sass|scss)$/,
            use: ['style-loader', 'css-loader?importLoaders=2', 'sass-loader'],
            // exclude: /node_modules/
        },{
            test: /\.(svg)$/,
            use: ['file-loader'],
            // exclude: /node_modules/
        },
        {
            test: /\.(otf)(\?.*)?$/,
            loader: 'url-loader?limit=10000&mimetype=application/font-sfnt'
        }]
    },
    output: {
        path: path.join(__dirname, 'dist'),
        publicPath: '/dist/',
        filename: 'bundle.js'
    }
}
这是我的
.babelrc

{
    "presets": ["env", "react"]
}

在这种情况下,排列运算符未正确使用


您只需要:
Object.assign({},obj)
,或者:
test1={…obj}
。您所做的更像是
Object.assign({},obj.a,obj.b,obj.c);

在这种情况下,扩展运算符没有正确使用


您只需要:
Object.assign({},obj)
,或者:
test1={…obj}
。您所做的更像是
Object.assign({},obj.a,obj.b,obj.c);

当您展开一个对象时,您需要将其包装在对象体中(数组也是如此):

话虽如此,我看不出将对象排列组合在一起有什么好处。
你可以这样做:

const test1 = {...obj};
或者这个:

const test1 = Object.assign({}, obj);
编辑
我应该提到,对象扩展语法是一种新的语法,您需要babel插件来支持它

只要做:

npm install --save-dev babel-plugin-transform-object-rest-spread
并将其添加到您的
.babelrc
文件中:

{
  "plugins": ["transform-object-rest-spread"]
}

展开对象时,需要将其包裹在对象体中(数组也是如此):

话虽如此,我看不出将对象排列组合在一起有什么好处。
你可以这样做:

const test1 = {...obj};
或者这个:

const test1 = Object.assign({}, obj);
编辑
我应该提到,对象扩展语法是一种新的语法,您需要babel插件来支持它

只要做:

npm install --save-dev babel-plugin-transform-object-rest-spread
并将其添加到您的
.babelrc
文件中:

{
  "plugins": ["transform-object-rest-spread"]
}

谢谢@dmamills。它似乎在jsbin中工作,但在我的堆栈中不工作。不断得到意外的令牌。:(这是我在webpack中做的错误吗?实际上
Object.assign({},…obj)
只是一个错误,如果obj不可iterable。它不会传播(无序!)参数hanks@dmamills的对象属性。它似乎在jsbin中工作,但在我的堆栈中不工作。不断得到意外的标记。:(这是我在webpack中做的错误吗?实际上
object.assign({},…obj)
只是一个错误,如果obj不可iterable。它不会传播(无序!)参数的对象属性支持问题,以反映我尝试了
{…obj}
,但不断得到意外的标记。@NotriousWebmaster使用最后一个代码段。您不需要任何扩展语法(仅适用于ES6中的iterable内容!)使用
Object.assign
@notriouswebmaster查看我编辑的答案。你需要一个巴别塔插件,我确信你已经有了它。@Sagivb.g我添加了
babel-preset-stage-2
,它与
{…obj}一起工作
.Yay!stage-2和
transform object rest spread
之间有什么区别?尝试查找它,但文档不具体。我认为这是添加一系列功能与添加特定功能的问题。babel stage 2将支持目前处于stage 2及以上的大多数ES提案,其中
transform object-rest spread
只会添加对此特定功能的支持。更新了问题以反映我尝试了
{…obj}
,但不断得到意外的标记。@著名的网站管理员使用最后一个代码段。您不需要任何spread语法(仅适用于ES6中的iterable内容!)使用
Object.assign
@notriouswebmaster查看我编辑的答案。你需要一个巴别塔插件,我确信你已经有了它。@Sagivb.g我添加了
babel-preset-stage-2
,它与
{…obj}一起工作
.Yay!stage-2和
transform object rest spread
之间有什么区别?尝试查找它,但文档不具体。我认为这是添加一系列功能与添加特定功能的问题。babel stage 2将支持目前处于stage 2及以上的大多数ES提案,其中
transform object-rest spread
只会添加对该特定功能的支持。