Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.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
Javascript 定义仅应用于作为参数传递的对象的属性子集的函数_Javascript_Function_Object_Arguments - Fatal编程技术网

Javascript 定义仅应用于作为参数传递的对象的属性子集的函数

Javascript 定义仅应用于作为参数传递的对象的属性子集的函数,javascript,function,object,arguments,Javascript,Function,Object,Arguments,我最近遇到 我正在努力理解它是如何工作的,特别是这一部分: Array.from(e.attributes, ({name, value}) => [name, value]) 这里,我们处理的是一个Attr对象的集合,Attr的属性名为name和value。 因此,我们有一个匿名函数,它接受一个对象并返回一个数组。到目前为止,一切顺利 我不太明白函数的参数是如何定义为literal对象{name,value} 我能够隔离这种行为: > o={ a: 1, b: 2, ldfk

我最近遇到

我正在努力理解它是如何工作的,特别是这一部分:

  Array.from(e.attributes, ({name, value}) => [name, value])
这里,我们处理的是一个Attr对象的集合,Attr的属性名为
name
value
。 因此,我们有一个匿名函数,它接受一个对象并返回一个数组。到目前为止,一切顺利

我不太明白函数的参数是如何定义为literal对象
{name,value}

我能够隔离这种行为:

> o={ a: 1, b: 2, ldfk: 'mùl' }
> let objToArr = function({a,b}){ return [a,b] }

> objToArr(o)
[ 1, 2 ]
> 
> o = {'dfklj':3.14, 'c':'z', 'a':1, 'foo':'bar', 'b':2, 'z':26 }
{ dfklj: 3.14, c: 'z', a: 1, foo: 'bar', b: 2, z: 26 }
> objToArr(o)
[ 1, 2 ]
> 

但我还是不明白为什么它会起作用。有人能给我解释一下或让我参考一下相应的文档吗?

您要找的是一个,其中一个对象被分配给一个对象文字,只需要使用键,您需要使用

var object={name_uquo',value:42},
{name,value}=object;//名称是窗口的一个属性
console.log(名称);

console.log(值)您并没有确切地将对象文字定义为参数,而是您就是对象。你可以把解构看作是访问对象属性的另一种方式

例如,如果您有一个对象
a

const a = {
  name: 'foo',
  value: 'bar'
}
您可以通过多种不同的方式获取其属性:

通过括号表示法:

const name = a["name"];
const value = a["value"];
const name = a.name;
const value = a.value;
通过点符号:

const name = a["name"];
const value = a["value"];
const name = a.name;
const value = a.value;
或通过:

const a={
姓名:"富",,
值:“bar”
}
变量名称=a[“名称”];
var值=a[“值”];
console.log(名称、值);
var name=a.name;
var值=a.值;
console.log(名称、值);
var{name,value}=a;
console.log(名称、值)
我不太明白的是函数的参数被定义为literal对象{name,value}的方式


这称为JavaScript表达式,它可以将数组中的值或对象中的属性解压为不同的变量。

您的第一个链接不起作用。链接修复,感谢NinaIt的调用。另外:谢谢你,阿迪加,这就是我一直在寻找的答案。JavaScript总是让我惊讶:-)宾果!(继续计算生命、宇宙和一切的真实答案)不,在函数的参数声明中使用时,它不是“赋值”。即使在函数中使用了新变量,也可以将其赋值给新变量
constfunc=({a:foo,b:bar})=>{console.log(foo,bar)}