编写返回对象的carFactory函数及现有代码问题排查
错误排查
你的代码存在以下几处问题:
- 参数赋值错误:你将
make/model/year三个属性写死成了固定字符串'make'/'model'/'year',没有使用传入的参数变量值 isNew属性挂载对象错误:你将isNew挂载到了carFactory函数本身,而不是你创建的车辆对象- 函数无返回值:你没有将内部创建的
newCar对象返回,使用new关键字调用构造函数默认返回的是this指向的实例,和你内部创建的newCar无关 - 多余的
this使用:需求仅要求普通函数返回对象,不需要用构造函数的this语法
修正后的代码
function carFactory(make, model, year) { // 直接用传入参数创建对象 let newCar = { make: make, model: model, year: year, } // 给newCar对象添加isNew属性 if (year > 2018) { newCar.isNew = true; } else { newCar.isNew = false; } // 返回创建好的对象 return newCar; }; // 调用方式符合需求示例,不需要加new let newCar = carFactory('toyota', 'camry', 2020); console.log(newCar); // 输出 { make: 'toyota', model: 'camry', year: 2020, isNew: true }
如需简化写法,也可以用对象属性简写和布尔值直接返回的逻辑压缩代码:
const carFactory = (make, model, year) => ({ make, model, year, isNew: year > 2018 })
内容的提问来源于stack exchange,提问作者JonSnow1221
相关产品推荐
相关产品推荐

