微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查某物是否为Raphael对象?

如何解决如何检查某物是否为Raphael对象?

| 给定一个JavaScript对象,如何检查它是否是Raphael对象(不是纸张,而是圆,路径等)? “ 0”代表通用元素原型;我想我要测试
x.__proto__ === Raphael.el
以跨浏览器的方式,但我不确定。     

解决方法

        要详细说明并添加一些其他相关信息(花了我一些时间才知道接受的答案,而且显然我不是一个人在看其他答案,而且,接受的答案仅适用于一种类型的Raphael对象:它解决了原始问题,这是更完整的资源)。 检测拉斐尔元素 使用
x.constructor.prototype == Raphael.el
,您将得到
x
,该变量可能是Raphael元素(圆,路径等-不是Raphael
set
paper
对象),并将构造该函数的函数原型与Raphael中Raphael元素的原型进行比较本身(Raphael是一个函数对象,el是它的定义属性)。 这可行,但也不会根据与Raphael.el不同的原型找到Raphael对象,例如布景和纸质对象: 检测拉斐尔集 如果要测试某物是否为Raphael集,则该集的原型为
Raphael.st
,因此可以使用以下方法测试变量是否为Raphael集:
someSet.constructor.prototype ==  Raphael.st
检测Raphael纸张对象 至于嗅探Raphael纸对象的等效方法,由于它们是使用
Raphael()
函数创建的,因此可以使用:
paper.constructor.prototype ==  Raphael.prototype
以上三个基本上与...相同
someSet.constructor.prototype ==  paper.circle().constructor.prototype
...要么...
someSet.constructor.prototype ==  paper.set().constructor.prototype
...要么...
someSet.constructor.prototype ==  Raphael().constructor.prototype
...但实际上并没有运行这些功能,因此避免了浪费的处理过程(避免Raphael()抱怨尚未传递ID)。 检测对象的子类型(例如矩形,圆形...) 以上都不适用于Raphael元素的子类型-例如如果将圆与
R.rect().constructor.prototype
进行比较,则返回
true
。 这是因为圆形和矩形都是使用“ 0”中定义的元素原型制作的。但是,对于这些,Raphael使其变得容易:
someRectangle.type == \"rect\"
someCircle.type == \"circle\"
...等等..     ,        Pablo发布了一个不太正确的答案,但给了我寻找正确解决方案的灵感:
x.constructor.prototype == Raphael.el
    ,        您不能使用
constructor
属性并检查创建对象的函数(我假设它的名称为
Raphael
,但我没有使用lib)。 编辑 检查了lib网站,实际上是这样的:
obj.constructor === Raphael //true
    ,        我无法使用上述答案。但是对我有用的是与字符串
\"Raphaël’s object\"
进行显式比较。 例如:
var textName = paper.getElementByPoint(e.pageX,e.pageY);
if (textName== \"Raphaël’s object\")
{
   ...
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。