美文网首页
引用类型--KO

引用类型--KO

作者: 写代码的女孩最可爱 | 来源:发表于2019-04-18 19:18 被阅读0次

    js数据类型

    在javascript中数据类型分两大类:
    基本类型(值类型):number、boolean、String、undefined、null
    引用类型:object、Array

    区别是什么

    没有什么比代码更有说服力了,举个例子:

    var a = 1;
    var b = a;
    b = 0;
    var c = [ ];
    var d = c;
    d[1] = 'a';
    b  // 0
    a  // 1
    d // [empty, "a"]
    c // [empty, "a"]
    

    把基本类型赋值给变量时,变量本身改变不会改变原来的变量,把引用类型赋值给变量时,变量本身改变了原来的变量也会变。这是因为,基本类型在赋值的时候是保存的值,引用类型在赋值的时候是保存的引用。当复制保存着某个对象的变量时,操作的是对象的引用,但在为对象添加属性的时候操作的是实际的对象,可以看一道面试题:

    var a = {x : 1};
    var b = a;
    a.a = a = {x : 2};
    console.log(a.a); // undefined
    console.log(b.a); // {x : 2}
    

    第一行和第二行执行完之后:

    1. a 和 b都指向{x:1}这块内存
      第三行代码相当于:
    a.a = a ;
    a = {x: 2};
    

    a.a = a执行之后:

    a.a = { x : 1 }
    a = { x : 1 , a: { x : 2 } };
    b = { x : 1 , a: { x : 2 } };
    

    a = {x: 2};执行之后:

    a = { x : 2 };
    b = { x : 1 , a: { x : 2 } };
    

    所以不难看出a.a的值和b.a的值,掌握了原理之后一切都变得明了啦!

    如何判断对象的类型

    1. typeof obj
      适用于基本类型
    2. obj instanceof Object
      适用于引用类型的弱检查
    3. Object.prototype.toString.call(obj)
      适用于引用类型的强检查

    相关文章

      网友评论

          本文标题:引用类型--KO

          本文链接:https://www.haomeiwen.com/subject/ohztgqtx.html