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>

posted on 2017-09-17 18:33  Yoooshiki  阅读(185)  评论(0编辑  收藏  举报

导航