zoukankan      html  css  js  c++  java
  • JavaScript类型判断typeof和instanceof

    原始类型存在堆中,引用类型存在栈中,引用类型存的是指向对象内存的指针。

    原始类型有5个:undefined、null、string、boolean、number

    JavaScript提供了typeof方法来判断值类型,原始类型对应的结果是undefined、object、string、boolean、number(typeof null 结果是object,这本是个历史错误但沿用成习惯),Function类型typeof的结果是function,其他引用类型的typeof结果皆为object。

     1                 var a = null;   //obejct
     2                 var b ;         //undefined 
     3                 var c = "abc";  //string
     4                 var d = true;   //boolean
     5                 var f = 1;      //number
     6                 var g = {};     //object
     7                 var h = [];     //object
     8                 var i = /s/;   //object
     9                 var j =function(){}; //function
    10 
    11                 console.log(typeof a);
    12                 console.log(typeof b);
    13                 console.log(typeof c);
    14                 console.log(typeof d);
    15                 console.log(typeof f);
    16                 console.log(typeof g);
    17                 console.log(typeof h);
    18                 console.log(typeof i);
    19                 console.log(typeof j);

    引用类型通常理解成类,Object可以说是所有类的基类。JavaScript中并没有显式出现类,叫对象。

    本地对象

    • Object
    • Function
    • Array
    • String
    • Boolean
    • Number
    • Date
    • RegExp
    • Error
    • EvalError
    • RangeError
    • ReferenceError
    • SyntaxError
    • TypeError
    • URIError

    内置对象

    • Global
    • Math

    宿主对象

    • BOM和DOM的对象

    instanceof判断对象实例

     要判断不同对象,typeof已经无能为力了,到了instanceof的用武之地,它用来判断一个对象是否是另一个对象的实例。

    1                 console.log(new Object() instanceof Object);
    2                 console.log(new Function() instanceof Function);
    3                 console.log(new Array() instanceof Array);
    4                 console.log(new String() instanceof String);
    5                 console.log(new Boolean() instanceof Boolean);
    6                 console.log(new Number() instanceof Number);
    7                 console.log(new Date() instanceof Date);
    8                 console.log(new RegExp() instanceof RegExp);

    上面显然结果都是true,此外除Object之外的所有对象instanceof Object都是true。

    如果是自定义对象,instanceof自己和父类结果都会是true。父类指的是通过原型链继承的,可见我的JavaScript面向对象初探——封装和继承

  • 相关阅读:
    PKU 学生的反馈 20091
    PKU 学生的反馈 2009 –2
    中国队有进步
    刚发现博客园又遇到了问题
    今日计划
    Delphi中使用多线程
    在老ASP中使用对象的对象生存期问题
    ASP与Javascript
    ASP & VBScript的错误处理
    对前一段时间学习网络和多线程编程的总结
  • 原文地址:https://www.cnblogs.com/feitan/p/5118324.html
Copyright © 2011-2022 走看看