javascript - 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
返回acalcFunc
Vect
DVect
DVect
那么,在javascript中可能吗?
解决方案
试试.constructor
JS 中几乎每个对象的属性:
const calcFunc = (inst /*: Vect|DVect */) => {
let constructorParams = //...
return new inst.constructor(...constructorParams)
}
(极端情况:由创建的对象Object.create(null)
将没有.constructor
属性。但是通过做创建的对象,new Vect
任何对象都应该有一个。)new DVect
new
class {...}
.constructor
推荐阅读
- javascript - 在 JavaScrypt 中使用相同的密钥进行解构
- php - 在块克隆中使用块行克隆的 PHPWord 模板处理
- python - 如何遍历 python 文件中的 excel 工作表来计算分布在工作表上的值?
- javascript - 作用域方法装饰器到一个类的实例
- r - 如何在 Googlesheet 中将许多闪亮的输入保存为 data.frame?
- html - TranslateY 不会超出 CSS 中的某个边界
- concurrency - 如何处理有很多孩子的大聚合根?
- amazon-web-services - “global_replication_group_id”:与 terraform 中的 parameter_group_name 冲突
- mongodb - 返回数组数组作为 mongoose 中查询的响应
- amazon-web-services - AWS CloudFormation 堆栈名称和资源名称之间的关系