随着ES6的出现,我们得到了一种创建对象的新方法.我的问题是我们现在应该如何创建对象?假设新运算符的工作原理如下
function createNewObject(parentFunction){
var obj = {};
Object.setPrototypeOf(obj, parentFunction.prototype);
return parentFunction.apply(obj, Array.prototype.slice.call(arguments,1)) || obj;
}
Run Code Online (Sandbox Code Playgroud)
但是在创建课程时究竟发生了什么?在es6中创建对象的当前"正确"方式是什么?
今天我想出了一个想法,使用Proxy对象,允许创建多个抽象类,例如
const abstract = abstractClass => new Proxy(abstractClass,{
construct: (target, args) => { throw new Error('Error, class was declared as abstract!') }
});
class A{}
class B{}
class C{}
[A,B,C] = [A,B,C].map(c => abstract(c));
Run Code Online (Sandbox Code Playgroud)
所以我的问题是这个解决方案是否有任何缺点,如果有,它们是什么。
是否有任何打字稿框架允许用户使用众所周知的 java-spring 自动装配?例子
class A {
public print() : void;
}
class B {
constructor(a : A)
}
var obj = CONTAINER.get("B");
Run Code Online (Sandbox Code Playgroud)
容器是 API 的一部分