zoukankan      html  css  js  c++  java
  • JavaScript的数据类型——对象

    JavaScript的数据类型都已经很熟悉了:
    Undefined、Null、Number、String、Boolean.
    但仅仅是这些肯定是不够的,好在JavaScript还是想方设法使用这集中基本类型实现了对各种问题的灵活处理。

    一、生成对象

    JavaScript支持对象,而且支持多种对象的创建方式,如:

    (一)使用new Object()的方式

    <script type="text/javascript">
        var myData=new Object();
        myData.name="xxx";
        myData.age=23;
        
        console.log("name="+myData.name);
        console.log("age="+myData.age);
    </script>
    

    new Object()是创建了一个对象,但在执行myData.name="xxx";这条语句之前,myData是没有name这个属性的。

    (二)使用对象字面量的方式

    <script type="text/javascript">
        var myData={
            name : "xxx",
            age : 25
        };
        
        console.log("name="+myData.name);
        console.log("age="+myData.age);
    </script>
    

    使用这种对象字面量的方式,可以在得到一个对象的同时就定义了它的属性。
    属性和值之间用冒号(:)分隔;
    每个属性之间用逗号(,)分隔。
    但要注意:
    为了确保不出问题(大多浏览器的兼容性),最后一个属性后面一定不要有逗号!

    (三)访问对象里的属性

    访问对象里的属性很简单,正如使用对象字面量的方式里的方式一样,这种风格相信每一个程序员都很熟悉。

    但除此之外,还可以使用这种方式:

    <script type="text/javascript">
        var myData={
            name : "xxx",
            age : 23
        };
        console.log("name="+myData["name"]);
        console.log("age="+myData["age"]);
    
    </script>
    

    二、对象中定义函数

    对象中会有它的属性,在Javascript中,这个属性也可以作为函数存在。

    <script type="text/javascript">
    	var myData={
    		name : "xxx",
    		age : 25,
    		printMessage : function(){
    			console.log("name="+this.name);
    			console.log("age="+this.age);
    		}
    	};
    	myData.printMessage();
    </script>
    

    如上,printMessage是myData对象的一个属性,但printMessage的属性值是一个函数,那么,它就是myData对象的一个方法。
    注意:
    在函数内引用对象的属性,必须使用this关键字,否则得到Can't find variable异常。

    三、迭代对象属性

    使用myData["属性名"]这种风格来访问看似奇怪,类似与数组索引,但中括号中填写的却又不是索引数值,而是属性名。但这种风格其实也是经常用到的,比如JS中的增强for.

    <script type="text/javascript">
    	var myData={
    		name : "xxx",
    		age : 25,
    		printMessage : function(){
    			console.log("name="+this.name);
    			console.log("age="+this.age);
    		}
    	};
    	
    	for(var a in myData){
    		console.log(myData[a]);
    	}
    </script>
    

    在这个for循环中,每次迭代,都会把myData的属性名以字符串的形式赋给a, 如:nameageprintMwssage, 而myData[a], 其实就是myData["name"]myData["age"]myData["printMwssage"].

    这上面这个例子中,连带myData里面的函数也一起迭代了,控制台内容如下:

    xxx
    25
    function (){
    	console.log("name="+this.name);
    	console.log("age="+this.age);
    }
    

    四、对象中属性与方法的增删改查

    即使是使用对象字面量的方式定义对象,也可以继续添加、删除对象中的属性和方法。

    (一)给对象添加新属性、方法

    <script type="text/javascript">
    	var myData={
    		name : "xxx",
    		age : 25,
    		printMessage : function(){
    			console.log("name="+this.name);
    			console.log("age="+this.age);
    		}
    	};
    	
    	myData.day = "Monday";
    	myData.printDay = function(){
    		console.log("day="+this.day);
    	}
    
    </script>
    

    (二)检查对象中是否有某属性、方法

    <script type="text/javascript">
    	var myData={
    		name : "xxx",
    		age : 25,
    		printMessage : function(){
    			console.log("name="+this.name);
    			console.log("age="+this.age);
    		}
    	};
    	
    	var hasPrintMessage = "printMessage" in myData;  //返回true或false
    </script>
    

    (三)删除对象的属性、方法

    <script type="text/javascript">
    	var myData={
    		name : "xxx",
    		age : 25,
    		printMessage : function(){
    			console.log("name="+this.name);
    			console.log("age="+this.age);
    		}
    	};
    
    	delete myData.printMessage;
    
    </script>
    
  • 相关阅读:
    超过5名学生的课
    大的国家
    shell启动时读取的配置文件
    shell中的环境变量
    chisel中pviews命令无法使用
    shell script中的$*和$@
    OS X EI Capitan 10.11.4中sudo无法起作用的解决方法
    如何判断CPU的位数
    block中无法使用C数组变量
    布尔代数
  • 原文地址:https://www.cnblogs.com/VitoYi/p/7536572.html
Copyright © 2011-2022 走看看