鉴于以下代码: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有什么方法可以解构像数组这样的对象,还是我试图做的事情是不可能的?
3 回答
SMILET
TA贡献1796条经验 获得超4个赞
在参数中使用解构
const civic = {make: 'Honda', model: 'Civic'};
function logArgs({make, model}) {
console.log(make);
console.log(model)
}
logArgs(civic)
HUX布斯
TA贡献1876条经验 获得超6个赞
对于传播,您需要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);
添加回答
举报
0/150
提交
取消