美文网首页
JS中对象类型的检测

JS中对象类型的检测

作者: 无法找到此用户 | 来源:发表于2016-08-30 17:52 被阅读0次

检测一个对象是否存在:

if (typeof myObj === 'undefined') {
    var myObj = {};
}

可用于检测对象类型的运算符:

  • typeof
    主要对基础数据类型的判断,对引用类型都会返回object
  • instanceof
    左边的运算符必须是一个对象,右边的晕算数是对象类的名字或者构造函数
  • 对象的constructor属性
    每个对象都有constructor属性,起引用了该对象的构造函数
function isArray (arr) {
    return arr instanceof Array;
}

也可以通过

function isArray (arr) {
    return typeof arr === 'object' && arr.constructor === Array;
}

但是instanceof在某些IE版本中无效,且同一个页面中的不同框架(ifame)不共享prototype,所以最佳实践是:

if (typeof Array.isArray === 'undefined') {
     Array.isArray = function (arr) {
        return Object.prototpe.toString.call(arr) === '[object Array]'
    } 
}

一个用于获取对象类型名的通用函数:

function __getClass (object) {
    return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]&/)[1];
}

通过拓展,可以编写一个检测的函数:

function is (type, object) {
    return type === __getClass(object);
}

相关文章

  • JS中对象类型的检测

    检测一个对象是否存在: 可用于检测对象类型的运算符: typeof主要对基础数据类型的判断,对引用类型都会返回ob...

  • js检测对象类型

    检测对象, 这个是深拷贝的基石 检测对象是否可迭代const isIterator = obj => obj !=...

  • 二十二至二十五章导读题

    22.1 为何JS使用函数指针非常简单?因为在js中,所有的函数都是对象 22.2 在安全类型检测中,为何使用to...

  • javaScript获取浏览器类型以及版本

    检测浏览器类型的需要用到js的Navigator对象 Navigator对象的属性 有: appCodeName...

  • JS 对象

    JS对象 JS对象的意义和声明 在JS中,对象(OBJECT)是JS语言的核心概念,也是最重要的数据类型。在JS中...

  • Array 检测

    一般在js里,我们一般使用typeof 、instanceof进行类型检测,例如:检测某个对象是否为数组: if ...

  • 内置对象

    js的内置对象 内置对的有11个,Global对象不列入内置对象。 js的数据类型 问:js中数据类型有哪些?st...

  • JS面向对象精要(二)_函数

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(三)_理解对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

  • JS面向对象精要(四)_构造函数和原型对象

    JS面向对象精要(一)_原始类型和引用类型JS面向对象精要(二)_函数JS面向对象精要(三)_理解对象JS面向对象...

网友评论

      本文标题:JS中对象类型的检测

      本文链接:https://www.haomeiwen.com/subject/ktotettx.html