首页
学习
活动
专区
工具
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运算符。

    79510

    JavaScriptJavaScript 变量 ⑧ ( 获取变量数据类型 | 使用 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 // 检测 特定类型 对象 是否是 指定类型

    21310

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

    this总是指向函数直接调用者(而非间接调用者);如果有new关键字,this指向new出来那个对象事件,this指向触发这个事件对象,特殊是,IEattachEventthis总是指向全局对象...而对于其他对象,则需要通过 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节点集合(因为iedom对象是以com对象形式实现,js对象与com对象不能进行转换) 第一个参数是context(就是上下文意思),用来替换对象函数this 第二个参数是传递给对象函数参数

    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");

    37750

    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,也就是253次方减1, 比253次大所有数字则可以使用BigInt表达...BigInt是JavaScript一个新原始类型,可以用任意精度表示整数。使用BigInt,即使超出JavaScript Number 安全整数限制,也可以安全地存储和操作大整数。...对象只是带有属性和方法特殊数据类型。布尔型可以是一个对象。数字型可以是一个对象。...使用这些数据去完成预定操作函数是一等公民,是对象,是值,可以存储一个变量,数组或者对象函数可以传递给函数,并由函数返回,函数拥有属性函数总有返回值(换句话说就是有return语句,当然构造器函数除外

    40500

    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数据类型四种方法

    70130

    JS篇之数据类型那些事儿

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

    53420

    前端冷知识(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区分开。

    37620

    前端工程师自检清单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 对象一个元素)。...向参数传递引用类型值时,会把这个值在内存地址复制给一个局部变量,因此这个局部变量变化会反映在函数外部。

    26620
    领券