• javascript学习笔记-数据类型


    一 数据类型

      基本类型:undefined,null,boolean,number,string     保存在栈内存中     占用空间固定        变量直接从栈内存中存取的是该值

      引用类型:array,object,function,regexp           保存在堆内存中     占用空间不固定     变量从栈内存中读取指针,再通过指针在堆内存中访问该值

      1.动态属性

        不能给基本类型添加属性或方法

      2.复制变量值

        值类型属于基本类型的变量,复制的是值;值类型属于引用类型的变量,复制的是指针,他们都指向的同一个对象。

        赋值对象的时候,实际上复制的是对象的引用(引用指的就是对象的指针),但是为对象添加属性时,则操作的是对象本身

      3.参数传递

        ECMAScript中所有的函数参数都是按值传递

    function setName (obj) 
    {
         obj.name = "Mysic";     
    }
    
    var person = {};
    setName(person);
    alert(person.name) // Mysic
    
    //看似是引用。其实仍然是按值传递。
    //这里的值指的是对象在栈内存中保存的指针。
    
    function setName(obj)
    {
         obj.name = "Mysic";
         obj = {};//创建了一个新对象并把指针赋值给obj,那么obj的值保存的是新对象的地址,不再是person所保存的地址
         obj.say = "Blabla";//say属性添加到新对象中,并未添加到person所指的对象中                         
    }
    var person = {}
    setName(person);
    alert(person.name) //Mysic
    alert(person.say) // undefined
    
    //如果是引用传递,那么person应该是指向函数中的新的对象,并存在say属性。实际上并不存在。
    //引用传递这里可以理解为传递的是指针的指针,也就是person变量的地址

      4. 检测类型

        基本类型数据用typeof

        引用类型数据用instanceof  Object[,Array,RegExp]

  • 相关阅读:
    XP的定时关机命令?
    Vim简明教程【CoolShell】
    我和小美的撸码日记(3)之中的一个句话搞定MVC表单页数据绑定与提交
    Linux/RedHat 编译安装GNU gcc 4.9.0 (g++)
    真实股市房市信托本质,金融故事三则:钱都去哪儿了?
    一分钟制作U盘版BT3
    Android Studio中导入第三方库
    WebService究竟是什么?
    “权限”用英语该用哪个?
    Cocos2d-x v3.0 新的事件调度方法 lambda表达式的使用
  • 原文地址:https://www.cnblogs.com/mysic/p/5324390.html
Copyright © 2020-2023  润新知