[19/05/28-星期二] JavaScript_ 对象和引用数据类型

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>js中的对象</title>
    </head>
    <script type="text/javascript">
        /*Object 对象 类比为:塑料袋
         * 对象属于一种复合的数据类型,在对象中可以保存多个数据类型的属性
         * 分类:
         * 1、内建对象(标准的jar包):由ES标准定义的对象,在任何的ES的实现中都可以使用  如Math String 
         * 2、宿主队象(常用jar包):由js运行环境(浏览器)提供的对象,目前来说主要指由浏览器提供的对象 如BOM DOM 
         * 3、自定义对象:开发人员自己创建的对象
         * */
        
        //1、创建对象 使用new关键字调用的函,是构造函数,构造函数是专门用来创建对象的函数
        var obj=new Object();
        
        //2、在对象中保存的值成为属性。语法:对象.属性名="属性值"。如添加一个name属性
        obj.name="孙悟空";
        obj.gender="";
        obj.age=18;
        
        //3、读取对象中属性 语法: 对象.属性名    .如果读到变量中没有的属性,不会报错会返回undefined
        /*(1)对象的属性名不强制要求遵守标识符的规范 ,但是尽量是按规范 如 obj.var=45;也对
          (2)如果要使用乱七八糟的要采用另一种方式。 对象["属性名"]=属性值,读取时也要采用["属性名"]去读取
          如obj["123"]=78;是对的   这种方式更加灵活  在[]中可以传一个变量,这变量的值是什么就会去读取那个变量
           (3)、js属性的值可以是任意数据类型,包括可以是一个对象(塑料袋中套个塑料袋)
           in:检查一个对象中是否含有某个属性  "name" in obj;
         * */
        console.log(obj.name);
        
        obj.name="tom";//修改属性的值
        delete obj.age;//删除对象的age属性
        console.log(obj.name);
        
        var n="sex";
        obj["sex"]="";
        console.log(obj[n]);
        
    </script>
    <body>
    </body>
</html>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>引用数据类型</title>
        <script type="text/javascript">
            /*基本数据类型:String、 Number、Boolean、NULL、Undefined
             引用数据类型:Object
             js中变量都是保存到栈内存中的
               1)基本数据类型的值直接在栈内存中存储的,值与值之间单独存在,修改一个变量不会影响其他变量;
               2)引用数据类型的值是保存到堆内存的,在new一个对象时在堆中开辟一个空间,变量obj在栈中保存的是
                  对象的一个内存地址,当发生obj2=obj时等于把地址复制给obj2,它们操作的是同一地址的值,一个变另
                  一个也变。所谓地址就是一个引用。一个变量的属性改变,另一个也改变。 类似于"巫蛊娃娃"
                  如果obj2=null; 不会影响obj的引用
                  new一下等于新开辟一个空间
                  所有 var obj3=new Object(); obj3.name="TOM";
                  var obj4=new Object(); obj4.name="TOM";
                  对象obj3与obj4 不等 ,因为他们指向不同的内存地址。即obj3==obj4 输出为false
             */
            var obj=new Object();        
            obj.name="孙悟空";
            var obj2=obj;
            obj.name="猪八戒";
            console.log(obj.name);
            console.log(obj2.name);
            
            /*使用字面量来创建一个对象;
             * 还可以直接在创建对象时,直接指定对象的属性.语法var 对象名={属性名1:属性值,属性名2:属性值.....};
             */
            var obj3={};
            obj3.name="三藏";
            console.log(obj3.name);
            
            var obj4={name:"沙和尚", //这样写是为了清晰
                age:12,
                obj5:{name: "沙币"}
                };
            console.log(obj4.age);
            console.log(obj4.obj5.name);
            
            
            
        </script>
    </head>
    <body>
    </body>
</html>

 

posted @ 2019-05-28 18:58  ID长安忆  阅读(154)  评论(0编辑  收藏  举报