首页 > 解决方案 > javascript从类实例访问类工厂

问题描述

是否可以从同一个实例访问创建当前实例的工厂?

例如:

class Vect {}
class DVect extends Vect{}

const calcFunc = (inst:Vect|DVect) =>{
  let constructorParams = ...
  return new inst.Factory(...constructorParams)
  //note - Factory is not a real method
}

console.log(calcFunc(new Vect))
// will log a Vect instance

console.log(calcFunc(new DVect))
// will log a DVect instance


如果我传递给a并且如果我通过了,我希望在这里Vect返回acalcFuncVectDVectDVect

那么,在javascript中可能吗?

标签: javascriptgenerics

解决方案


试试.constructorJS 中几乎每个对象的属性:

const calcFunc = (inst /*: Vect|DVect */) => {
  let constructorParams = //...
  return new inst.constructor(...constructorParams)
}

(极端情况:由创建的对象Object.create(null)将没有.constructor属性。但是通过做创建的对象,new Vect任何对象都应该有一个。)new DVectnewclass {...}.constructor


推荐阅读