在 JavaScript 中获取真实对象类型
Get true object type in JavaScript
下面的屏幕截图显示突出显示的 JavaScript 对象类型为 Telerik.Web.UI.Grid
。
问题:获得JavaScript对象$telerik.radControls[6]
的真实类型的正确JavaScript代码是什么?我需要在 JavaScript 中动态确定运行时的真实类型,然后根据真实类型做一些事情。
我尝试了下面的代码,但是 typeof 总是 returns 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
的对象没有被实例化时出现以下错误。
Uncaught TypeError: Expecting a function in instanceof check, but got undefined
仅当对象类型存在时才有效的不安全代码
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
下面的屏幕截图显示突出显示的 JavaScript 对象类型为 Telerik.Web.UI.Grid
。
问题:获得JavaScript对象$telerik.radControls[6]
的真实类型的正确JavaScript代码是什么?我需要在 JavaScript 中动态确定运行时的真实类型,然后根据真实类型做一些事情。
我尝试了下面的代码,但是 typeof 总是 returns 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
的对象没有被实例化时出现以下错误。
Uncaught TypeError: Expecting a function in instanceof check, but got undefined
仅当对象类型存在时才有效的不安全代码
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