Abh*_*hek 4 javascript ecmascript-6 spread-syntax
我在控制台中执行类似下面的代码
function add(a,b){return a+b;};
const obj = {...add};
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是它没有抛出错误.也没有
const obj = {...123};
Run Code Online (Sandbox Code Playgroud)
扩展语法应该只适用于可迭代的实体,如对象,数组,字符串,映射,集合等.那么为什么在使用不可迭代的实体时它不会抛出错误?或者我在这里遗漏了什么?
JavaScript中的函数也是objects.它有它自己的属性,如name,call,apply等.
这样做const obj = {...add}只是得到枚举的属性function object,把它们放到另一个对象,并分配给obj.你可以通过检查
function add(a,b){return a+b;};
add.test = 1;
const obj = {...add};
console.log('test' in obj);Run Code Online (Sandbox Code Playgroud)
关于什么123是转换为Number包装,其余是一样的
const obj = {...123};
console.log('valueOf' in obj);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |