js中的内置类型

2020-06-20  本文已影响0人  练习时长2年半的个人练习生

内置类型

js一共有七种内置类型

Array Function Map Set 等都属于Object的子类型
其中除了Object都是值类型, Object是引用类型

判断类型

   let a= null;
   (!a && typeof a == 'object') //true

补充:!运算符判断各种类型的结果

     let  a;
     console.log(!a)
     let b = null
     console.log(!b)
     let c = 0
     console.log(!c)
     let d = undefined
     console.log(!d)

Function类型

    function fn (a,b){}
    fn.sex ="男"
    console.log(fn.sex)//男
    console.log(fn.length)//2
    let str = '123';
    console.log([1,2,3] instanceof Array)//true
    console.log([1,2,3] instanceof Object) //true

因为所有类型的实例的[[prototype]]都会关联到Object.prototype
所有任何类型的实例都能调用Object.prototype上的toString方法,
每个类型又对toString进行了改写.所以,还得用Object.prototype上的toString 方法

   let str ='AAA'
   console.log(str.__proto__ === String.prototype)
   console.log(String.prototype.__proto__ === Object.prototype )
   let num =11
   console.log(num.__proto__ === Number.prototype)
   console.log(Number.prototype.__proto__ === Object.prototype )
   function fn(){}
   console.log(fn.__proto__ == Function.prototype)
   console.log(Function.prototype.__proto__ == Object.prototype)
//都返回true

Object.prototype.toString返回一个表示该对象的字符串。
Array ,String,Number 等在自己的原型上对该方法进行了重写

 let letters = {
    a: 1,
    b: 'strings',
    c: undefined,
    d: new Map(),
    e: new Set(),
    f: null,
    g: {},
    h: [],
    i: Symbol(),
    j: function () { },
    k: true,
  }
  for (let key in letters) {
    let dataType = Object.prototype.toString.apply(letters[key])
    console.log(type)
  }
//  [object Number]
//  [object String]
//  [object Undefined]
//  [object Map]
//  [object Set]
//  [object Null]
//  [object Object]
//  [object Array]
//  [object Symbol]
//  [object Function]
//  [object Boolean]
上一篇下一篇

猜你喜欢

热点阅读