获取JavaScript中的真实对象类型
下面的屏幕截图显示了突出显示的JavaScript对象的类型为获取JavaScript中的真实对象类型,javascript,telerik,javascript-objects,typeof,Javascript,Telerik,Javascript Objects,Typeof,下面的屏幕截图显示了突出显示的JavaScript对象的类型为Telerik.Web.UI.Grid 问题:获取JavaScript对象真实类型的正确JavaScript代码是什么?我需要在JavaScript中运行时动态确定真正的类型,然后根据真正的类型做一些事情 我尝试了下面的代码,但typeof总是返回object if (typeof $telerik.radControls[6] === "Telerik.Web.UI.RadGrid") { //do something }
Telerik.Web.UI.Grid
问题:获取JavaScript对象真实类型的正确JavaScript代码是什么?我需要在JavaScript中运行时动态确定真正的类型,然后根据真正的类型做一些事情
我尝试了下面的代码,但typeof总是返回object
if (typeof $telerik.radControls[6] === "Telerik.Web.UI.RadGrid") {
//do something
} else if(typeof $telerik.radControls[6] === "Telerik.Web.UI.RadSearchBox") {
//do something
} else if (typeof $telerik.radControls[6] === "Telerik.Web.UI.RadTreeView") {
//do something
}
更新1
我尝试了评论中提到的一些建议,但当我在下面的屏幕显示中使用instanceof
时,我不可用
更新2
在使用instanceof
确定JavaScript对象的真实类型时,我发现了一个有趣的事实。下面的代码并不总是有效的。只有当已经存在类型为Telerik.Web.UI.RadGrid
的对象时,它才会起作用,即我们正在检查的对象类型的构造函数已经被调用。当没有实例化Telerik.Web.UI.RadGrid
的对象时,我得到了以下错误
未捕获的TypeError:在instanceof check中需要一个函数,但未定义
仅当对象类型存在时才起作用的不安全代码
if (x instance of Telerik.Web.UI.RadGrid) {
//do something
}
然而,当我使用下面这样的代码时,即使没有实例化Telerik.Web.UI.RaGrid
类型的对象,它也不会抛出错误
始终有效的安全代码,即不会抛出错误
if (typeof Telerik.Web.UI.RadGrid !== "undefined && x instance of Telerik.Web.UI.RadGrid) {
//do something
}
instanceof
操作符将给出一个布尔结果,告诉您其左操作数(一个对象)的原型链中是否包含右操作数(一个函数)的.prototype
因此,假设Telerik.Web.UI.RadGrid
是构造函数,您可以这样做:
$telerik.radControls[6] instanceof Telerik.Web.UI.RadGrid
instanceof
操作符将给出一个布尔结果,告诉您其左操作数(一个对象)的原型链中是否包含右操作数(一个函数)的.prototype
因此,假设Telerik.Web.UI.RadGrid
是构造函数,您可以这样做:
$telerik.radControls[6] instanceof Telerik.Web.UI.RadGrid
if($telerik.radControls[6]instanceof telerik.Web.UI.Grid){…
假设telerik.Web.UI.Grid
是保存对象原型的构造函数。您必须检查instanceof
Try$telerik.radControls[6].constructor.name
我复制并粘贴了您的代码的修改版本。看起来您想要的是RadGrid
而不是Grid
。因此$telerik.radControls[6]Telerik.Web.UI.RadGrid的instanceof Telerik.Web.UI.RadGrid
@squint,对不起,我不知道我怎么漏掉了那个部分,也没有注意到Rad
丢失了。它可以工作。你能把这个作为答案发布吗?if($Telerik.radControls[6]Telerik.Web.UI.Grid的instanceof){…
假设Telerik.Web.UI.Grid
是保存对象原型的构造函数。您必须检查instanceOf
Try$Telerik.radControls[6].constructor.name
我复制并粘贴了您的代码的修改版本。看起来您想要的是RadGrid
而不是Grid
。因此$telerik.radControls[6]instanceof Telerik.Web.UI.RadGrid
@斜视,对不起,我不知道我怎么错过了那个部分,也没有注意到Rad
丢失了。它可以工作。你能把这个作为答案发布吗?