Javascript 是否可以将方法链接到getter?
你能帮我实现预期的编码吗 实际代码Javascript 是否可以将方法链接到getter?,javascript,class,Javascript,Class,你能帮我实现预期的编码吗 实际代码 let garage = new Garage(); // getter outputs array of car objects garage.cars // independent method outputs array of car brands garage.carsBrands(); let garage = new Garage(); // getter outputs array of car objects
let garage = new Garage();
// getter outputs array of car objects
garage.cars
// independent method outputs array of car brands
garage.carsBrands();
let garage = new Garage();
// getter outputs array of car objects
garage.cars
// method chained to former getter outputs array of car brands
garage.cars.brands();
预期代码
let garage = new Garage();
// getter outputs array of car objects
garage.cars
// independent method outputs array of car brands
garage.carsBrands();
let garage = new Garage();
// getter outputs array of car objects
garage.cars
// method chained to former getter outputs array of car brands
garage.cars.brands();
brands()
使用cars
输出值返回其自身的值。您需要使用额外的方法扩展cars数组
然而,请注意,这并不是真正的最佳实践,因为代码的用户希望数组是普通数组——不多也不少
无论如何:
class车库{
构造函数(){
this._cars=Object.assign([],{brands:()=>this.carsBrands()});
}
addCar(品牌,年份){
这个。_cars.push({brand,year});
归还这个;
}
买车{
把这个还给我;
}
carsBrands(){
return[…新设置(this._cars.map(car=>car.brand))];//使其独一无二
}
}
让车库=新车库();
车库。addCar(“丰田”,2007年)。addCar(“宝马”,2019年);
控制台.日志(车库.汽车);
console.log(garage.cars.brands())代码>您可以扩展它,但它不是直观的。查一下德米特定律。Car
对象本身不是一个数组,cars
本身必须是一个自定义对象,表示一组Car
对象,实现brands()
。你们能给我举个例子吗?它不能既是数组又是自定义的非数组类型,而让这种精确语法起作用的替代方法(扩展所有数组,将方法直接附加到数组,创建从数组继承的自定义类型)是不好的。我建议使用brands(garage.cars)
调用一个函数brands
。