在JS中像数组一样解构对象?

鉴于以下代码:


const civic = {make: 'Honda', model: 'Civic'};


function logArgs(make, model) {

  console.log(make);

  console.log(model)

}

我想做这个:


logArgs(...civic);

代替:


logArgs(civic.make, civic.model);

我得到:


(index):39 Uncaught TypeError: Found non-callable @@iterator


有什么方法可以解构像数组这样的对象,还是我试图做的事情是不可能的?


牛魔王的故事
浏览 196回答 3
3回答

SMILET

在参数中使用解构const civic = {make: 'Honda', model: 'Civic'};function logArgs({make, model}) {  console.log(make);  console.log(model)}logArgs(civic)

冉冉说

logArgs(...Object.values(civic))请注意,这将取决于对象的顺序,这可能很棘手

HUX布斯

对于传播,您需要Symbol.iterator为对象实现 a ,因为对象没有内置迭代器。这种方法只采用值,但任何其他方法都可以工作,比如返回条目。function logArgs([make, model]) {  console.log(make);  console.log(model)}const civic = { make: 'Honda', model: 'Civic' };civic[Symbol.iterator] = function* () {    yield Object.values(civic);};logArgs(...civic);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript