Javascript系列教程:面向对象讲解(二)

对象的声明

js对象的声明语法:

var obj=new Object();// 注意这里的是大写O

这样就声明了一个空的对象,该语法可简写为

var obj={};

还记得数组对象Array的声明方式吗?var arr=new Array();它可以简写为var arr=[];注意一个是{},一个是[]。

·object与array之间的联系

<script type="text/javascript">
//array
var arr=["wang","hong","jia"];
for(var i=0;i<arr.length;i++)
{
alert(arr[i]);
}
//object
var obj={FirstName:"Wang",LastName:"Hongjian"};
alert("obj.FirstNam:" + obj.FirstName);
alert("obj.LastName:" + obj.LastName);
</script>

严格讲它们之间联系主要是数据结构组成方式相同,数组可以理解为下标为0,1,2,3……这种固定隐式的方式来标示,即Key:Name中索引 Key从0递增;而对象则是一个Key:Name,其中Key由用户定义,也即:

var arr=[Name1,Name2,Name3,...];
var obj=[Key1:Name1,Key2:Name2,Key3:Name3,...];

前文讲到可以也var obj={};来简写实例化对象,那么具有相同的属性可以以var arr=[];的方式来简写数组。

我一直提到js中的的实例化对象,以.net的对象为例,个人理解是js的封装对象的同时实例化对象,也就是“即时使用”吧(个人词语)。
如在.net 中

public class Person()
{
private int _age=23;
private string _name="Wang Hongjian";
}

js 版本:

var Person={age:23,name:"Wang Hongjian"};

对象的方法

var Me={Name:"Wang Hongjian",Action:function(){alert("I’m commbating");}}
Me.Action();

这样可以加深方法也是对象的印象。 :D

对象属性和方法的访问

var Person={Age:23,Name:"Wang Hongjian",Action:function(){alert("I’m commbating");}}

以此为例访问name属性可以有以下方式

Person.name
Person["name"]

访问Action方法

Person.Action;
Person["Action"]

执行对象的方法:Person.Action();

修改对象的属性和方法

Person.name="Hongjian";
Person.Action=function(){
alert("I can be strong");
};

删除对象的属性和方法

delete Person.name;
alert(Person.name);//返回undefined