面向对象精要-类型

原始类型和引用类型

原始类型

  • 5种基本类型
    • number
    • string
    • boolean
    • null
    • undefined
  • 原始类型的值互不影响。
var color1 = 'red';
    var color2 = color1;

    console.log(color1) //red
    console.log(color2) //red

    color2 = 'blue'

    console.log(color1) //red
    console.log(color2) //blue
复制代码
  • 能够看出来原始类型的值互不影响,当color2改变值的时候,color1的值没有改变。
  • 鉴别原始类型
console.log(typeof 'red')   //string
   console.log(typeof 123)     //number
   console.log(typeof true)    //boolean
   console.log(typeof undefined) //undefined
   console.log(typeof null)    //object
复制代码
  • 只有null的类型为object,并非null。
  • 判断一个值是否为空的最好办法:和null比较,注意使用三个=号
console.log(value === null) //true or false
复制代码

引用类型

  • 建立对象
var obj = new Object()
复制代码
  • 将一个对象赋值给一个变量的时候,再将这个变量赋值给另一个变量的时候,这两个变量是同一个指针。
var obj1 = new Object()
    obj.name = 'aaa';
    var obj2 = obj1;
    
    console.log(obj1.name)  //aaa
    console.log(obj2.name)  //aaa

    obj2.name = 'bbb'
    console.log(obj2.name)  //bbb
    console.log(obj1.name)  //aaa
复制代码
  • 此时obj1的name也改变了。
  • 对象引用解除
    • 将对象设置为null
  • 鉴别引用类型:instanceof
var aa = [];
  var bb = {};
  function vv (){}

  console.log(aa instanceof Array) //true
  console.log(bb instanceof Object) //true
  console.log(cc instanceof Functionn) //true

  // 引用类型都是继承object
   console.log(aa instanceof Object) //true
   console.log(bb instanceof Object) //true
   console.log(cc instanceof Object) //true
复制代码
  • 鉴别数组
// Array.isArray()
  var arr = [];
  console.log(Array.isArray(arr))//true
  
复制代码
相关文章
相关标签/搜索