let myFunc = function ( Superclass = Object ) {
return class Clickable extends Superclass {
constructor( args ) {
super( args );
}
click() {}
};
};
console.log(myFunc);
console.log(myFunc());
let obj = new (class Q extends myFunc() {})();
console.log(obj);
console.log(obj instanceof myFunc());
instanceof返回false。
但是我很难理解为什么它确实返回false。 如果有的话,我希望它会说两次“标识符Y已经被声明”。
是否可以解决此问题? (非常脏)的解决方案是检查Q是否定义了“点击”方法。
答案 0 :(得分:1)
这是因为每次调用myFunc
时,都会定义一个新类,然后返回。这些类不同,因此这些实例显然不能同时是多个类的实例。为了证明返回的类不相同,只需进行简单的检查即可:
console.log(myFunc() === myFunc()); // false