[英]javascript access class factory from class instance
Is it possible to access the factory that created current instance from the same instance?是否可以从同一个实例访问创建当前实例的工厂?
for example:例如:
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
here I would expect a Vect
to be returned if I passed to calcFunc
a Vect
and DVect
if I passed DVect
在这里,如果我传递给
calcFunc
一个Vect
和DVect
,如果我通过DVect
,我希望返回一个Vect
so, is it possible in javascript?那么,在 javascript 中是否可能?
Try the .constructor
property that's on almost every object in JS:尝试 JS 中几乎每个 object 上的
.constructor
属性:
const calcFunc = (inst /*: Vect|DVect */) => {
let constructorParams = //...
return new inst.constructor(...constructorParams)
}
(Edge case: objects created by Object.create(null)
won't have a .constructor
property. But objects created by doing new Vect
, new DVect
, new
of any class {...}
should all have a .constructor
.) (极端情况:由
Object.create(null)
创建的对象将没有.constructor
属性。但是通过执行new Vect
、 new DVect
、 new
任何class {...}
创建的对象都应该有一个.constructor
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.