gpt4 book ai didi

javascript - 我如何检查某物是否是 Raphael 对象?

转载 作者:数据小太阳 更新时间:2023-10-29 04:37:35 25 4
gpt4 key购买 nike

给定一个 JavaScript 对象,如何检查它是否是 Raphael 对象(不是纸,而是圆、路径等)?

Raphael.el 表示通用元素原型(prototype);我想我要测试一下

x.__proto__ === Raphael.el

以跨浏览器的方式,但我不完全确定。

最佳答案

详细说明并添加一些更相关的信息(我花了一点时间才弄清楚接受的答案,显然我不是一个人在看其他答案,而且,接受的答案只适用于 一种拉斐尔对象:它解决了原始问题,这是一个更完整的资源)。


检测拉斐尔元素

使用 x.constructor.prototype == Raphael.el,您将获取 x,该变量可能是 Raphael 元素(圆圈、路径等 - 不是 Raphael setpaper 对象)并比较函数的原型(prototype)用Raphael本身中Raphael元素的原型(prototype)构造它(Raphael是一个函数对象,el是它定义的属性)。

这有效,但它也不会找到基于与 Raphael.el 不同原型(prototype)的 raphael 对象,例如集合和纸对象:


检测拉斐尔集

如果您想测试某物是否是 Raphael 集,集合原型(prototype)位于 Raphael.st 中,因此您可以使用以下方法测试变量是否是 Raphael 集:

someSet.constructor.prototype == Raphael.st


检测 Raphael 纸质对象

至于嗅探 Raphael paper 对象的等价物,因为它们是使用 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)。


检测对象的子类型(例如矩形、圆形...)

以上都不适用于拉斐尔元素的子类型——例如如果您将圆与 R.rect().constructor.prototype 进行比较,它会返回 true

这是因为圆形和矩形都是使用 Raphael.el 中定义的 element 原型(prototype)制作的。然而,对于这些,Raphael 使之变得简单:

someRectangle.type == "rect"

someCircle.type == "circle"

...等..

关于javascript - 我如何检查某物是否是 Raphael 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com