# 基础数据

# 分别有哪些类型

  • 基础类型

    • String:字符串类型
    • Number:数字类型
    • Boolean:true,false
    • undefined:undefined
    • null:null
  • 对象(引用)类型

    • Object:任意对象
    • Function:可以执行的函数对象
    • Array:有序的数值下标的数组对象

# 对象

  1. 什么是对象
    • 代表现实中的某个事物,是该事物在编程中的抽象
    • 多个数据的封装体
    • 用于保存多个数据的容器
  2. 为什么要用对象
    • 便于对多个数据进行统一的管理
  3. 对象的组成
    • 属性
      • 代表现实事物的状态数据
      • 有属性名和属性值组成
      • 属性名都是string,属性值是any
    • 方法
      • 代表事物的行为数据
      • 属性值是fn
  4. 如何访问对象内部数据
    • obj.a
    • obj['a']

# 怎么判断类型

  • typeof
typeof 'Mondo' // "string"
typeof 1 // "number"
typeof true // "boolean"
typeof false // "boolean"
typeof null // "object"
typeof undefined // "undefined"
typeof [] // "object"
typeof function aa(){} // "function"
1
2
3
4
5
6
7
8

我们看到上面的结果可以得到:

  1. 基本类型,除 null 外,都可以得到正确的类型。
  2. 对于引用类型,除 function 外,都返回 object
  3. 对于 null ,返回 object
  4. 对于 function, 返回 function
  • instanceof

用于检测某个对象是不是另一个对象的实例

[] instanceof Array; // true
({}) instanceof Object; // true

function fn() {}
fn instanceof Function // true
new Date() instanceof Date;// true

[] instanceof Object // true
fn instanceof Object // true
1
2
3
4
5
6
7
8
9

我们看到其实引用类型的实例都是Object

  • Object.prototype.toString.call()

利用所有其他对象集成object对象, Object.prototype.toString返回当前对象对应的字符串形式

Object.prototype.toString.call(1) //"[object Number]"
Object.prototype.toString.call('Mondo') // "[object String]"
Object.prototype.toString.call([]) // "[object Array]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call(function fn() {}) // "[object Function]"
1
2
3
4
5
6
7
  • isArray, isNaN

isArray 判断是否为数组 isNaN 判断是否是一个NaN值,如果是NaN值返回true,不是为false

Array.isArray([]) // true
Number.isNaN(1) // false
Number.isNaN(+'1') // false
Number.isNaN(+'a') // true
Number.isNaN(NaN) // true
1
2
3
4
5

# 一些问题

  • undefinednull的区别

undefined代表已定义了变量但是并未赋值

nulljs关键字;变量赋值为null

+null // 0

+undefined // NaN
1
2
3
  • 如何判断一个变量是否为数组?
// 不能用 typeof 判断
typeof [] // object

[] instanceof Array // true

Array.isArray([]) // true
1
2
3
4
5
6
更新于: 6/19/2020, 7:19:13 AM