js Object.assign()使用

Object.assign()应用

Object.assign语法可以用来给对象赋值。这个语法在react-redux应用中会经常见到。但js原生的Object.assign语法和react-redux的扩展运算赋还是有一些差异的。

  • Object.assign的功能是一样的
  • 扩展运算符的功能不同,react-redux的扩展运算符功能适用的对象类型更多一些。

以下主要针对js原生的Object.assign进行介绍。
看下面的例子来了解下Object.assign的特点。

var newjson = "product" +':'+"15"
console.log('------------------')
console.log(Object.assign({},{},newjson))
console.log('------------------')

结果

{ '0': '"',
'1': 'p',
'2': 'r',
'3': 'o',
'4': 'd',
'5': 'u',
'6': 'c',
'7': 't',
'8': ':',
'9': '1',
'10': '5',
'11': '"' }

从上面的结果中可以看到,使用Object.assign将字符串赋值为对象是,字符串会被当做数组对待了,结果中得到对应数组中的每一个值,绝大多数时候,你应该不会想这么做。

var test = {}
test.digit = "15"
console.log(test)	  
console.log('------------------')
console.log(Object.assign({},{},test,test))
console.log('------------------')

结果

{ digit: '15' }

{ digit: '15'

从上面的结果中可以看到,使用Object.assign给对象赋相同的值时,结果中只会得到一个值,

这个特性比较适用于需要给对象计数的地方

js原生的扩展运算符The spread syntax

var parts = ['shoulders', 'knees']; 
var lyrics = ['head', ...parts, 'and', 'toes']; 
console.log(lyrics)

结果

[ 'head', 'shoulders', 'knees', 'and', 'toes' ]

对一个对象来使用扩展运算符会怎样了?很遗憾,会发生语法错误。所以不要把js的原生扩展运算符与redux的扩展运算符功能弄混了。

参考

spread syntax

posted on 2017-06-13 20:55  猫不白  阅读(2028)  评论(0编辑  收藏  举报

导航