• 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>
    
  • 相关阅读:
    Button 样式设置
    WPF 运行报错:在使用 ItemsSource 之前,项集合必须为空。
    c# List 按条件查找、删除
    c# WPF DataGrid设置一列自增一
    C# WPF DataGrid去掉最左侧自动生成一列
    int 转换成定长的 byte数组
    字节数组 byte[] 与 int型数字的相互转换
    [ c# ] int 类型转换为固定长度的字符串
    ListView 绑定 字典
    不能引用的文件,却需要在程序底层使用的文件 的存放位置
  • 原文地址:https://www.cnblogs.com/VitoYi/p/7536572.html
Copyright © 2020-2023  润新知