创建对象的第一种方式:
<scripttype="text/javascript">
//定义一个类,用的是function而不是class
function Class1(){
//定义两个属性
this.x=1;
var y=1;
//定义一个方法
this.fangfa=function (){
alert("x="+this.x);
alert("y="+y);
}
}
//实例化对象
var cl=new Class1();
//访问对象属性的时候,可以使用[]也可以使用"."
//alert(cl.x);
//alert(cl["x"]);
cl.fangfa();
</script>
第二种方式:
<scripttype="text/javascript">
//通过new Object()
//var obj=new Object();
//定义空白类
function Test(){
}
//实例化
var obj=new Test();
//定义属性
obj.name="凤姐";
obj.age="108";
//定义方法
obj.fangfa=function (){
alert(this.age);
}
alert(obj.fangfa());
</script>
使用prototype的方式想对象中添加属性和方法
1)创建类,比如类名 Test
2)用"类名.prototype"定义新的属性或者是方法
例子:
<scripttype="text/javascript">
//定义一个空白的类
function Testpro(){}
//通过prototype向类中添加属性
Testpro.prototype.name="白骨精";
//实例化
var tp=new Testpro();
alert(tp.name);
</script>
关于共有和私有属性问题:
用var定义的属性是私有的。我们需要使用this关键字来定义共有的属性
虚拟构造函数:
<scripttype="text/javascript">
//自己虚拟一个构造方法
function Test(a,b){
var x;
var y;
//定义一个共有的方法
this.init=function (){
x=a;
y=b;
alert("Test类已经被初始化,执行虚拟构造函数");
alert(a+"==="+b);
}
//调用自身的init方法
this.init();
this.getX=function(){
alert(x);
}
this.getY=function(){
alert(y);
}
}
//实例化
var obj=newTest(3,4);
obj.getX();
obj.getY();
obj.gun="枪";
alert(obj.gun);
/*
上述的定义和获取,采用已经实例化的对象进行操作
这种定义一般比较普遍,定义不是静态属性,属于对象的
*/
//通过类名.属性名 定义是静态属性,和一般定义的区别是,这个属性是属于类的,不是属于对象的
Test.count=10;
alert(Test.count);
</script>
//json格式的字符串
<scripttype="text/javascript">
varstr="[{id:'1',name:'gao'},{id:'2',name:'凤姐'}]";
//将json格式的字符串转换为 对象
varobj=eval("("+str+")");
//alert(obj.length);
for(var i=0;i<obj.length;i++){
alert(obj[i].id+","+obj[i].name);
}
</script>