![]() |
1
50
试试这个:
|
![]() |
2
93
你就是这样做的:
打电话稍微容易一点
您可以使用以下任一项创建工厂功能:
或
它将与任何构造函数一起工作,而不仅仅是内置的或可以作为函数(如日期)双重使用的构造函数。 但是它需要ecmascript 5.bind函数。垫片可能无法正常工作。
另一种不同的方法,更多的是采用其他一些答案的风格,就是创建一个内置函数版本
现在,你当然可以
例如:
不过,我觉得我给出的第一个解决方案更好,因为它不依赖于您正确地复制内置的语义,并且它与内置正确地工作。 |
![]() |
3
13
此函数与
更新: 一旦ES6支持得到广泛应用,您就可以编写以下内容:
…但是您不需要,因为标准库功能
|
![]() |
4
4
另一种方法,它要求修改正在调用的实际构造函数,但在我看来比使用eval()或在构造链中引入一个新的伪函数更简单…保持你的连续动作像
并修改正在调用的构造函数…
所以你可以试试:
|
![]() |
5
3
如果
如果
(显然,
我有一段最初使用的代码
测试套件创建多个树。我计算了我的
|
![]() |
6
3
在ecmascript 6中,可以使用spread运算符将带有new关键字的构造函数应用于参数数组:
|
![]() |
7
1
有一个可重复使用的解决方案。对于您希望使用apply或call方法调用的每个类,必须在转换为allowapply(“classnameinstring”)之前调用;该类必须位于同一个Scope或全局Scope中(例如,我不尝试发送ns.classname…) 代码如下:
|