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