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的扩展运算符功能弄混了。