JavaScript 学习笔记— —类型判断

//1 判断是否为数组类型
    var a=[0];
    console.log(isArray(a));
    function isArray(obj){
        return (typeof obj==‘object‘) && obj.constructor==Array;
    }

    console.log("2-----------------------------------")
    //2 判断是否为字符串类型
    console.log(isString(‘test‘));
    console.log(isString(10));
    function isString(str){
        return (typeof str==‘string‘)&&str.constructor==String;
    }

    console.log("3-----------------------------------")
    //3 判断是否为数值类型
    console.log(isNumber(‘test‘));
    console.log(isNumber(10));
    function isNumber(obj){
        return (typeof obj==‘number‘)&&obj.constructor==Number;
    }

    console.log("4-----------------------------------")
    //4 判断是否为日期类型
    console.log(isDate(new Date()));
    console.log(isDate(10));
    function isDate(obj){
        return (typeof obj==‘object‘)&&obj.constructor==Date;
    }

    console.log("5-----------------------------------")
    //5 判断是否为函数
    console.log(isFunction(function test(){}));
    console.log(isFunction(10));
    function isFunction(obj){
        return (typeof obj==‘function‘)&&obj.constructor==Function;
    }

    console.log("6-----------------------------------")
    //6 判断是否为对象
    console.log(isObject(new Object()));
    console.log(isObject(10));
    function isObject(obj){
        return (typeof obj==‘object‘)&&obj.constructor==Object;
    }

    /*
    * null 数组  日期 对象返回的是object类型
    */
// js数据类型: number   string    boolean   undefined   object和函数类型 function    

    console.log(typeof null)//object
    console.log(typeof Function)//function  Function是包装类型
    console.log(typeof undefined)//undefined

    var message;
    console.log(message)//undefined 定义了没有赋值
    console.log(typeof message)//undefined 类型
    console.log(null == undefined)//true

    /*
    * true==1;fase==0;
    * */
    console.log(true == 1)//true
    console.log(false == 0)//true
    console.log(false ==2)//false

    var str="";
    console.log(str==0);//true;空字符串将会把值转换为0
    console.log(typeof str)//string

  var str2=new String(‘A‘);  console.log(str2) //String { 0="A"}

原型扩展方法

Object.prototype.toString.call

    var gettype=Object.prototype.toString
    gettype.call(‘aaaa‘)             //[object String]
    gettype.call(2222)              //[object Number]
    gettype.call(true)              //[object Boolean]
    gettype.call(undefined)         //[object Undefined]
    gettype.call(null)              //[object Null]
    gettype.call({})                //[object Object]
    gettype.call([])                //[object Array]
    gettype.call(function(){})      //[object Function]

 

/*    其实js 里面还有好多类型判断
     [object HTMLDivElement]   div 对象  ,
    [object HTMLBodyElement]  body 对象
     ,[object Document](IE)或者  [object HTMLDocument](firefox,google) ......各种dom节点的判断,这些东西在我们写插件的时候都会用到。*/

    var   gettype=Object.prototype.toString
    var    utility={
        isObj:function(o){
            return    gettype.call(o)=="[object Object]";
        },

        isArray:function(o){
            return    gettype.call(o)=="[object Array]";
        },
        isNULL:function(o){
            return    gettype.call(o)=="[object Null]";
        },
        isDocument:function(){
            return    gettype.call(o)=="[object Document]"|| [object HTMLDocument];
        }
        //...
    }

 

时间: 2024-10-25 15:27:14

JavaScript 学习笔记— —类型判断的相关文章

javascript学习笔记---ECMAScript-判断变量类型

判断类型之前,先要清楚有哪些类型. (理理思路:程序由数据和方法构成,数据由简单数据和复杂数据构成) 即类型有: 数据(简单数据:boolean,string,num,undefined,null.复杂数据:object), 方法(function) 万能的typeof,神一样的方法 typeof(1);// num typeof("hello");// string   typeof(false);// boolean var vFlag; typeof(vFlag);// unde

javascript学习笔记---ECMAScript语法(引用类型)

引用类型通常叫做类(class). 本教程会讨论大量的 ECMAScript 预定义引用类型. 引用类型 引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象. 本教程会讨论大量的 ECMAScript 预定义引用类型. 从现在起,将重点讨论与已经讨论过的原始类型紧密相关的引用类型. 注意:从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现"类"这个词.ECMAScript 定义了"对象定

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个

Javascript学习笔记-一些关键点

Javascript学习笔记-一些关键点 Table of Contents 1. 调试 2. == vs === 3. 两种函数声明 4. 技术感悟 1 调试 现在的主流浏览器都提供了开发者模式,可以通过控制台(console)调试javascript 2 == vs === ==先转换类型再比较,===先判断类型,如果不是同一类型直接为false. ===表示恒等于,比较的两边要绝对的相同 alert(0 == ""); // true alert(0 == false); //

JavaScript学习笔记 isPrototypeOf和hasOwnProperty使用区别

1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false. 格式如下: object1.isPrototypeOf(object2); object1是一个对象的实例: object2是另一个将要检查其原型链的对象. 原型链可以用来在同一个对象类型的不同实例之间共享功能. 如果 object2 的原型链中包含object1,那么 isPrototypeOf 方法返回 true. 如

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一

javascript学习笔记---ECMAScriptECMAScript 对象----修改对象

通过使用 ECMAScript,不仅可以创建对象,还可以修改已有对象的行为. prototype 属性不仅可以定义构造函数的属性和方法,还可以为本地对象添加属性和方法. 创建新方法 通过已有的方法创建新方法Number.prototype.toHexString = function() { return this.toString(16); }; 在此环境中,关键字 this 指向 Number 的实例,因此可完全访问 Number 的所有方法.有了这段代码,可实现下面的操作: var iNu

javascript学习笔记---ECMAScript语法(辅助)

1.区分大小写. test与Test变量是两个不同的变量 2.变量是弱变量. 与C,java等等语言变量不是很一样. 如下java代码 ? 1 2 3 4 int i =0; //再次赋值 i = 10;//ok i = "hello";//wrong 类型不匹配 javascript ? 1 2 3 4 var i = 9; //再次赋值 i = 10;//ok i = "hello";//ok 但是不建议这么干,如此会给开发造成干扰,不明确变量的类型.(变量命名