首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Object.prototype.toString.call()返回带有Javascript的对象类型 - 在IE中不起作用

在这个问答内容中,我们讨论了使用Object.prototype.toString.call()方法来返回带有Javascript的对象类型,但是在Internet Explorer(IE)浏览器中遇到了不起作用的问题。以下是关于这个问题的完善且全面的答案:

首先,Object.prototype.toString.call()是一个非常有用的方法,它可以用来检测JavaScript中的对象类型。这个方法的原理是通过调用对象的toString方法并传递一个特定的对象作为this值,从而获取对象类型的字符串表示。例如,使用这个方法可以检测数组、日期、正则表达式等对象类型。

然而,在Internet Explorer(IE)浏览器中,这个方法可能会遇到一些问题。这是因为IE浏览器对于一些内置对象的toString方法实现与其他浏览器不同。例如,在IE浏览器中,使用Object.prototype.toString.call()检测某些内置对象类型可能会返回错误的结果。

为了解决这个问题,我们可以使用以下方法:

  1. 使用类型转换函数:可以使用类型转换函数将对象转换为字符串,然后检查字符串中的特定标记。例如,可以使用Object.prototype.toString.call(obj) === 'object Array'来检测数组类型。
  2. 使用polyfill:polyfill是一种兼容性解决方案,可以在浏览器中添加缺失的功能。可以使用一些第三方库,如es5-shim和es5-sham,来解决IE浏览器中的兼容性问题。
  3. 使用现代浏览器:随着现代浏览器的普及,IE浏览器的使用率逐渐下降。在许多情况下,可以考虑使用现代浏览器来避免这些兼容性问题。

总之,Object.prototype.toString.call()方法是一种非常有用的方法,但在IE浏览器中可能会遇到一些问题。为了解决这些问题,可以使用类型转换函数、polyfill或现代浏览器来避免这些兼容性问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JS框架设计之对象类型判断一种子模块

    Javascript有两套数据类型,一套是基础数据类型,一套是对象数据类型。...基于这么多数据类型,所以JS就自带有类型判定的方法,typeof  用来检测基本数据类型,instanceof 用来检测对象数据类型,但是JS自带的这两套识别机制并不靠谱,所以产生了isXXX一系列来判断数据类型的方法.../* Javascript有两套数据类型,一套是基础数据类型,一套是对象数据类型。...基于这么多数据类型,所以JS就自带有类型判定的方法,typeof 用来检测基本数据类型, instanceof 用来检测对象数据类型,但是JS自带的这两套识别机制并不靠谱,所以产生了isXXX...下的typeof返回unknown的情况 /* 之前大多数人用document.all是否存在来判定IE,因为用document.all来取得页面中的元素是不错的注意,但是这个方法其他浏览器也觊觎了好久

    1.1K80

    4种Javascript类型检测的方式

    今天这篇文章,主要介绍了JavaScript中检测数据类型的4种方式。如果已经会了的可以当成复习,如果还不了解的话,可以认真看看,并加以运用。 1、typeof 主要用于判断基本数据类型 。...使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。 typeof运算符的返回类型为字符串,值包括如下几种: 1....: 不能区分对象、数组、正则,对它们操作都返回"object";(正则特殊一点后面说) Safar5,Chrome7之前的版本对正则对象返回 'function' 在IE6,7和8中,大多数的宿主对象是对象...,而不是函数;如:typeof alert; //object 而在非ID浏览器或则IE9以上(包含IE9),typeof alert; //function 对于null,返回的是object....总结: typeof运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回'object',有时我们需要判断该实例是否为某个对象的实例,那么这个时候需要用到instanceof运算符。

    80510

    【JavaScript】JavaScript 变量 ⑧ ( 获取变量数据类型 | 使用 typeof 运算符 获取变量数据类型 | 判断 空类型 | 判断 数组类型 | 获取 对象 具体类型 )

    一、获取变量数据类型 1、使用 typeof 运算符 获取变量数据类型 在 JavaScript 中 , 使用 typeof 运算符 可以 获取一个变量的 数据类型 , typeof 表达式 返回的是一个...对于 空类型值 null , 使用 typeof 运算符 获取 null 值的类型 , 会返回类型为 object , 这是一个JavaScript的历史错误 ; 要检测一个变量是否为 null ,...对于 数组类型 变量 , 使用 typeof 运算符 获取 数组变量 的类型 , 会返回类型名称为 object ; 要检测一个变量是否为 数组 , 需要 使用 Array.isArray(arrVar...具体类型 使用 variable instanceof ClassName 可以 检测 特定类型的 对象 是否是 指定的类型 ; 使用 Object.prototype.toString.call(variable...=edge"> JavaScript // 检测 特定类型的 对象 是否是 指定的类型

    30410

    前端开发中不可忽视的知识点汇总(二)

    this总是指向函数的直接调用者(而非间接调用者);如果有new关键字,this指向new出来的那个对象;在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象...而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。...分支 (10)使用 /**...*/ 进行多行注释,包括描述,指定类型以及参数值和返回值 (11)函数不应该有时候有返回值,有时候没有返回值 (12)语句结束一定要加分号 (13)for 循环必须使用大括号...polyfill 是“在旧版浏览器上复制标准 API 的 JavaScript 补充”,可以动态地加载 JavaScript 代码或库,在不支持这些标准 API 的浏览器中模拟它们。...而在 IE 中,目标包含在 event 对象的 srcElement 属性; 获取字符代码、如果按键代表一个字符(shift、ctrl、alt除外),IE 的 keyCode 会返回字符代码(Unicode

    1.7K40

    面试常考手写代码学习技巧总结

    对象深拷贝 肯定需要返回一个一个拷贝后的对象,在初期会声明一个空对象,最后返回这个处理过的对象。...Object.prototype.toString() (推荐款) 可以说是判定 JavaScript 中数据类型的终极解决方法了,具体用法请看以下代码: Object.prototype.toString.call...Object.prototype.toString.call(new WeakMap()) // '[object WeakMap]' 我们可以发现该方法在传入任何类型的值都能返回对应准确的对象类型...需要注意的是这是 Array.isArray 是 ES 5.1 推出的,不支持 IE6~8,所以在使用的时候也应注意兼容问题。 出现不兼容问题解决办法if (!...,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js对象与com对象不能进行转换) 第一个参数是context(就是上下文的意思),用来替换对象函数中的this 第二个参数是传递给对象函数的参数

    1.1K20

    call、apply、bind的应用和区别

    ,并且把对应的参数值准备好,以后要用到了,直接的执行即可,也就是说bind同样可以改变this的指向,但和apply、call不同就是不会马上的执行(如上一个例子) 注意:bind这个方法在IE6~8下不兼容...,在严格模式下this是undefined 应用 ① 将伪数组转化为数组(含有length属性的对象,dom节点, 函数的参数arguments) js中的伪数组(例如通过document.getElementsByTagName...~8,会报错: SCRIPT5014: Array.prototype.slice: 'this' 不是 JavaScript 对象 (报错) 那么在IE6~8下就只能通过循环一个个加到数组中了: for...(var i = 0; i < oLis.length; i++) { ary[ary.length] = oLis[i]; } 基于IE6~8和标准浏览器中的区别,抽取出类数组对象转换为数组的工具类...this对象代替Animal对象,那么 // Cat中不就有Animal的所有属性和方法了吗,Cat对象就能够直接调用Animal的方法以及属性了 var cat = new Cat("TONY");

    38950

    JavaScript中的类型判断

    前言 类型判断在 web 开发中有非常广泛的应用,简单的有判断数字还是字符串,进阶一点的有判断数组还是对象,再进阶一点的有判断日期、正则、错误类型,再再进阶一点还有比如判断 plainObject、空对象...那我们都知道,在 ES6 前,JavaScript 共六种数据类型,分别是: Undefined、Null、Boolean、Number、String、Object 然而当我们使用 typeof 对这些数据类型的值进行操作的时候...那就让我们写个 type 函数帮助我们以后识别各种类型的值吧! 我的设想: 写一个 type 函数能检测各种类型的值,如果是基本类型,就使用 typeof,引用类型就使用 toString。...在 IE6 中,null 和 undefined 会被 Object.prototype.toString 识别成 [object Object]!...之所以要判断是不是 plainObject,是为了跟其他的 JavaScript对象如 null,数组,宿主对象(documents)等作区分,因为这些用 typeof 都会返回object。

    1.3K30

    JavaScript数据类型浅析

    null 得到检测错误是历史遗留问题,在 JS 的最初版本中使用的是 32 位系统,为了性能考虑使用低位存储变量的类型信息,000 开头代表是对象然而 null 表示为全零,所以将它错误的判断为 object...在JavaScript中的基本数据类Number是双精度浮点数,它可以表示的最大安全范围是正负9007199254740991,也就是2的53次方减1, 比2的53次大的所有数字则可以使用BigInt表达...BigInt是JavaScript中的一个新的原始类型,可以用任意精度表示整数。使用BigInt,即使超出JavaScript Number 的安全整数限制,也可以安全地存储和操作大整数。...对象只是带有属性和方法的特殊数据类型。布尔型可以是一个对象。数字型可以是一个对象。...使用这些数据去完成预定的操作函数是一等公民,是对象,是值,可以存储在一个变量,数组或者对象中函数可以传递给函数,并由函数返回,函数拥有属性函数总有返回值(换句话说就是有return语句,当然构造器函数除外

    41400

    Js获取数据类型

    typeof typeof(operand)或typeof operand,operand是一个表示对象或原始值的表达式,其类型将被返回。...JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。...对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。...在Js中,一切都是对象,至少被视为一个对象,能够直接使用字面量声明的基本数据类型,虽然并不是直接的对象类型,但是在基本数据类型的变量调用方法的时候,会出现一个临时的包装对象,从而能够调用其构造函数的原型的方法...,所以使用instanceof时对于字面量声明的String、Number、Boolean、Symbol、BigInt都会返回false。

    9.4K40

    JavaScript的数据类型及其检测

    由此可得,基本数据类型的值是不可改变的 2.存放在栈区 原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。...2.同时保存在栈内存和堆内存 引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。...3.比较是引用的比较 当从一个变量向另一个变量赋引用类型的值时,同样也会将存储在变量中的对象的值复制一份放到为新变量分配的空间中。...Object上的toString它的作用是返回当前方法执行的主体(方法中的this)所属类的详细信息即"[object Object]",其中第一个object代表当前实例是对象数据类型的(这个是固定死的...JS中的数据类型及判断 Javascript 判断变量类型的陷阱 与 正确的处理方式 判断JS数据类型的四种方法

    70630

    JS篇之数据类型那些事儿

    在HTML文档中,Web开发者可以使用JS来CRUD DOM 结构,其主要的目的是「动态」改变HTML文档的结构。...和 IE 的 ActiveXObject JS数据类型 每种编程语言都具有内建的数据类型,而根据使用数据的方式从两个不同的维度将语言进行分类。...「动态/静态」: 动态类型:运行过程中需要检查数据类型 静态类型:使用之前就需要确认其变量数据类型 「强/弱」: 强类型:不支持隐式类型转换 弱类型:支持隐式类型转换 ❝隐式类型转换 :在赋值过程中,编译器会把...JavaScript 标准中,规定了 ToPrimitive 函数,它是对象类型到基本类型的转换(即,拆箱转换)。...该对象被转为原始类型的值时,会调用这个方法,返回该对象对应的原始类型值。

    53620

    前端冷知识(01):JS里的null是什么类型?

    null是Javascript里的一种基本类型,其它几种基本类型还有:string,number,boolean,undefined。而object是引用类型,也称为对象类型。...在Javascript中,不同的数据类型在底层都表示为二进制,比如: 000 - 对象,数据是对象的引用 1 - 整型,数据是31位带符号整数 010 - 双精度类型,数据是双精度数字 100 - 字符串...而null是一个空值,其二进制表示全是0,自然前三位也是000,所以执行typeof的时候会返回object,产生假象。...若要拿到真实的数据类型,可以使用:Object.prototype.toString.call Object.prototype.toString.call(null) '[object Null]'...'[object Number]' // 注意,这里的Number指类型,需要和内置对象Number区分开。

    47320

    前端工程师自检清单73答

    引用类型的数据的地址指针是存储于栈中的,当我们想要访问引用类型的值的时候,需要先从栈中获得对象的地址指针,然后,在通过地址指针找到堆中的所需要的数据。 3....JavaScript 中的变量在内存中的具体存储形式 JavaScript 中的变量分为基本类型和引用类型: 基本类型: 保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问...引用类型: 保存在堆内存中的对象,值大小不固定,栈内存中存放的该对象的访问地址指向堆内存中的对象,JavaScript 不允许直接访问堆内存中的位置,因此操作对象时,实际操作对象的引用 5....理解值类型和引用类型 JavaScript中的变量分为基本类型和引用类型: 基本类型: 保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问 引用类型: 保存在堆内存中的对象...在转去之前,try 中先把要返回的结果存放到局部变量中去,执行完 finally 之后,在从中取出返回结果。 因此,即使finally 中对返回的结果进行了改变,但是不会影响返回结果。

    1.9K21

    JavaScript 数据类型

    JavaScript 语言可以识别 7 中不同的数据类型,除 Object 外,其它均为基本数据类型,Object 为引用数据类型。...var o = new Object() var o = new Object 关于 Object 对象的详细内容,可以参考 深入学习JavaScript——Object对象 和 使用 Object.defineProperty...vs 基本数据类型 基本数据类型复制相当于在内存中新开辟一块内存,引用数据类型的复制相当于在内存中创建了一个新的指针,指向存储在堆中的一个对象。...在向参数传递基本数据类型的值时,被传递的值会被复制给一个局部变量(即命名参数,也就是 arguments 对象中的一个元素)。...在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数外部。

    27420
    领券