2017-03-29 面向对象笔记

Array.isArray()

  • 作用:判断某个对象是否是数组
  • 使用:
    Array.isArray(对象)
    返回值:布尔类型的值(true|false)
  • 注意点:
    兼容性问题(ES5)
  • 思考:
    如何判断某个对象是否是一个数组
    typeof 关键字用于判断数据的类型(基本数据类型 + 复杂数据类型)
  • 基本数据类型
    typeof 字符串 string
    typeof 数字 number
    typeof true|flase boolean
    typeof null object(!)
    typeof undefined undefined
  • 复杂数据类型
    typeof 对象类型 object
    typeof 函数类型 function
  • 实现思路:
  • 判断这个对象是否有特定的方法(push) 可以实现但是不严谨 不推荐
  • instanceOf 似乎可以
  • 判断对象的构造器属性 可以实现,但是不严谨
  • toString 方法
  • 在使用[]语法设置对象的时候
    []中存放的是字符串,那么这个字符串就直接作为 key
    []中存放的不是字符串,那么就把[]中部分当成一个变量来处理,查找最近变量,获取其值
    如果对应的值是字符串,那么就直接作为 key
    如果对应的值是对象,那么就尝试把这个对象转换为字符串(toString)
  • toString:
    返回的是对当前对象的字符串描述
    object 类型对象的 toString: Object.prototye
    数组类型 toString:Array.prototype
  • 对象在作为 key 的时候
    如何判断数组
    如何判断日期类型
  var o = {};
    var a ={};
    var b = {name:"张三"};

    o["a"] = "Test-a";
    o["b"] = "Test-b";
    o[b] = "Demo-b";
    o[a] = "Demo-a";

    console.log(o.a);      //Demo-a  Test-a
    console.log(o.b);      //Test-b  Test-b
    console.log(o[a]);     //Demo-a  Demo-b
    console.log(o[b]);     //Demo-b  Demo-b
    console.log(o["a"]);   //Test-a  Test-a
    console.log(o["b"]);   //Demo-b  Test-b

    var arr1= [1,2,3];
    console.log( arr1.toString());
    var func = function () {

    }

    console.log(typeof func.toString());
    console.log(a.toString());   //[object Object]  [类型 构造函数]
    console.log(b.toString());
    console.log(o);
  if (typeof Array.isArray != "function")
    {
        Array.isArray = function (obj) {
            return Object.prototype.toString.call(obj) == "[object Array]";
        }
    }

    var arr = [1,2,3];
    console.log(Array.isArray(arr));



                    
                    

你可能感兴趣的:(2017-03-29 面向对象笔记)