我想检查对象是否x实现(是) mixin MyInterface:
Ext.define('MyInterface', {
interfaceMethod: Ext.emptyFn
});
Ext.define('Foo', {
mixins: {
myInterface: 'MyInterface'
}
});
var x = new Foo();
Run Code Online (Sandbox Code Playgroud)
console.log(x instanceof MyInterface);
Run Code Online (Sandbox Code Playgroud)
var isInstanceOfMyInterface = false;
for (var i in x.mixins) {
if (x.mixins[i].$className == 'MyInterface') {
isInstanceOfMyInterface = true;
}
}
console.log(isInstanceOfMyInterface);
Run Code Online (Sandbox Code Playgroud)
解决方法有一个主要问题:如果使用 MyInterface 的子类,则它不起作用。
Ext 核心使用的一种模式是应用 mixin 特定属性,以便您可以测试它的存在。它也比instanceof check便宜很多。例如:
Ext.define('MyInterface', {
isMyInterface: true,
interfaceMethod: Ext.emptyFn,
});
Ext.define('Foo', {
mixins: {
myInterface: 'MyInterface'
}
});
var x = new Foo();
console.log(x.isMyInterface);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1572 次 |
| 最近记录: |