在javaScript下并不像其他面向对象的语言那样有严格的没定义方法.规定的应该只是函数的定义function()
以下是几种看到过的类定义的方式:
工厂方式:
<script language="javascript" type="text/javascript">
function Personsfactory(name,age)
{
var person=new Object();
person.Name=name;
person.Age=age;
person.Show=function()
{
alert(this.Name+this.Age);
}
return person;
}
var personeD=Personsfactory('do',10);
var personeZ=Personsfactory('zb',11);
personeD.Show();
personeZ.Show();
</script>
function Personsfactory(name,age)
{
var person=new Object();
person.Name=name;
person.Age=age;
person.Show=function()
{
alert(this.Name+this.Age);
}
return person;
}
var personeD=Personsfactory('do',10);
var personeZ=Personsfactory('zb',11);
personeD.Show();
personeZ.Show();
</script>
构造函数方式:
<script language="javascript" type="text/javascript">
function Person(name,age)
{
this.Name=name;
this.Age=age;
this.Show=function()
{
alert(this.Name+this.Age);
}
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
function Person(name,age)
{
this.Name=name;
this.Age=age;
this.Show=function()
{
alert(this.Name+this.Age);
}
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
构造函数&原型方式:
<script type="text/javascript" language="javascript">
function Person(name,age)
{
this.Name=name;
this.Age=age;
}
Person.prototype.Show=function()
{
alert(this.Name+this.Age);
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
function Person(name,age)
{
this.Name=name;
this.Age=age;
}
Person.prototype.Show=function()
{
alert(this.Name+this.Age);
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
动态的原型方式:
<script type="text/javascript" language="javascript">
function Person(a,b)
{
this.Name=a;
this.Age=b;
if(typeof Person._initialize=="undefined")
{
Person.prototype.Show=function()
{
alert(this.Name+this.Age);
}
}
Person._initialize=true;
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
function Person(a,b)
{
this.Name=a;
this.Age=b;
if(typeof Person._initialize=="undefined")
{
Person.prototype.Show=function()
{
alert(this.Name+this.Age);
}
}
Person._initialize=true;
}
var personeD=new Person('do',10);
var personeZ=new Person('zb',11);
personeD.Show();
personeZ.Show();
</script>
构造函数&原型方式和动态的原型方式是属于比较常用的js下的类定义方式了.
现在还有各种的框架提供了不同的类的定义方法:
还接触的比较少,接触过的prototype的类定义方法为:
<script language="javascript" type="text/javascript">
var Person=Class.create();
Person.prototype={
initialize:function(name,age)
{
this.Name=name;
this.Age=age;
},
Show:function()
{
alert(this.Name+this.Age);
}
}
var test=new Person('Do','11');
test.Show();
var Person=Class.create();
Person.prototype={
initialize:function(name,age)
{
this.Name=name;
this.Age=age;
},
Show:function()
{
alert(this.Name+this.Age);
}
}
var test=new Person('Do','11');
test.Show();
</script>