在上一篇文章中我们介绍了"JavaScript闭包-匿名函数和函数的作用域链"。今天将继续学习其他知识:JavaScript面向对象-简单对象的创建和JSON对象。
JavaScript是一种基于对象(Object-based)的编程语言,它的本质实际上是面向对象。面向对象的语言的特点是它们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。但是在JavaScript中没有类的概念,通常称JavaScript中的对象为原型对象,我们可以直接通过Object来创建对象。例如下面的代码:
var person = new Object();
person.name = "张三";
person.age = 20;
person.say = function(){
alert(this.name+","+this.age);
}
在上面的代码中,通过Object简单的创建了一个person
对象,随后为person
对象设置了2个属性和1个方法。
通过上面的方式创建的对象,带来的最大问题是由于没有类的约束,无法实现对象的重复利用,并且没有一种约定,在操作是会带来问题。
Json对象
我们不能够在网络中传输一个JavaScript对象,在网络中只能够传输字符串。一个可行的传输对象的方法是将对象编写为XML格式进行传输,例如:
<?xml version="1.0" encoding="utf-8"?>
<preson>
<id>1</id>
<name>张三</name>
<age>20</age>
</person>
但是使用XML格式进行数据传输的时候,在传输过程中会产生大量的附加标签字符串,这样的传输效率明显不高。为了解决这些问题,人们研究出了另一种字符串对象的格式:Json对象格式。
Json的全称是javascript simple object notation,是一种简单的数据交换格式。Json对象就是javascript对象,但是它省略了xml中的标签,而是通过{}来完成对象的说明。
Json格式通过属性名:属性值
来定义属性,不同的属性通过逗号(,
)来分隔,最后一个属性不需要添加逗号。例如下面的代码定义了一个Json格式的person
对象。
var person = {
name : "张三",
age:23,
say:fuction(){
alert(this.name+","+this.age);
}
}
要调用person
对象的属性和方法和普通的JavaScript对象使用的方法相同,例如:
// 调用person的say方法
person.say();
我们通过Json也可以创建对象数组,创建的方式和JavaScript的数组一样。
var ps = [
{name:"Leon",age:22},
{name:"Ada",25}
];
在完成数组的创建之后,我们也可以遍历数组中的Json对象。
for(var i = 0; i < ps.length; i++){
alert(ps[i].name);
}