Javascript 如何知道';种类';一个enyo组件?

Javascript 如何知道';种类';一个enyo组件?,javascript,enyo,Javascript,Enyo,我有一个类似tweetEnyo的组件,它是用enyo脚本创建的。基于它的类型,我想做一些动作 有没有办法在运行时找到在enyo中创建的组件的类型 来自enyo网站: 控件的工作原理很像HTML标记。您可以指定 类和属性,并为其提供样式。例如 所以你可以做: new enyo.Control({content: "Hello From Enyo", classes: "foo", style: "color: red", attributes: {tabInde

我有一个类似tweetEnyo的组件,它是用enyo脚本创建的。基于它的类型,我想做一些动作

有没有办法在运行时找到在enyo中创建的组件的类型

来自enyo网站:

控件的工作原理很像HTML标记。您可以指定 类和属性,并为其提供样式。例如

所以你可以做:

new enyo.Control({content: "Hello From Enyo", classes: "foo",
                  style: "color: red", attributes: {tabIndex: 0, enyo:true}}).renderInto(document.body);
这会将enyo的属性设置为true并进行检查。任何有enyo成分的东西


示例:

您应该能够在运行时访问
kind
属性。下面是一个检测所选项目类型的示例:

如果需要使用调试器查找,可以将该ID与全局enyo对象的$hash一起使用。e、 g:

enyo.$.app_myKind.kind
不是从即将发布的博客文章中抢走风头,而是在Chrome/Firefox web inspector中,最后检查的元素是$0。所以,
enyo.$[$0.id].kind
是检验项目的种类

我确实注意到,在我的示例中,应用程序并没有与之关联的类型。通常是这样

更新:应用程序未使用特定种类声明,并将退回到父级的默认种类,在本例中为
控件
。您可以使用
.defaultKind
访问该值。此外,您可以使用对种类的实际引用来指定种类(例如,种类:
enyo.Button
),因此不能依赖
.kind


获取名称的正确方法是使用
.kindName
,它将是实际的种类。

感谢LmC的回复。这会告诉我它是一个enyo组件,但它不会告诉我它是什么类型的组件,在这种情况下,它是“控制”类型的。而不是写真的?执行类似enyo:componenttype的操作?如果你听我说的话?这是一个很好的解决办法,但是我们都在使用来自其他来源的很多组件,在每种组件中添加该属性会很麻烦。必须有一些默认方法才能知道它的类型。我在那里找到了一些,他们在尝试像。。。someComponentObj[“种类”]。。但对我来说不起作用。虽然,someComponentObj['name']确实正确返回了它的名称。公平地说,我可以问一下您为什么需要知道它是什么吗?我的理解是,你不应该关心它是什么,因为那是enyos的工作,你应该只关心它呈现了什么?事实上,我有一个键盘类型的enyo组件,它在内部检测它的属性类型是否输入,然后它将键盘按下的字符写入输入,否则如果它的控制台,那么它将字符写入控制台。仅供参考,它的gts.keyboard组件是的,inSender.kind确实给了我这种组件。虽然“enyo.$.app\u myKind.kind”似乎不起作用,正如我提到的,app实例似乎没有种类,但如果我将其更改为app\u按钮,它在该小提琴中可以正常工作。明白你的意思了。我仍然想知道为什么没有任何方法可以仅仅通过一个简单的方法,比如。。。someComp.getKind()。在kind为null的情况下,您还可以检查
.defaultKind
以获取所使用的种类。好的,我最后只是去阅读Oop.js中的源代码。您可以使用
.kindName
,它适用于所有情况。
enyo.$.app_myKind.kind