js类

  1  js类

js中类的定义有点不一样,不过暂时可以只研究一下: 如何创建 JavaScript 对象的模板 (template),使用js对象模板时候创建的对象类似与类的定义(包含属性和方法).

  

<html>
<head>

</head>
<body>

<script type="text/javascript">

function People(name)//创建对象的模板,相当与类定义
{
    this.name = name;//为对象属性赋值
    this.SetName = function(newname){ //对象方法(内部直接定义)
    document.writeln("old name:" + name + "<br />");
    this.name = newname;
    document.writeln("new name:" + name + "<br />");
    }
}

var p = new People("zhangsan");
document.writeln("name:" + p.name + "<br />");
p.SetName("lisi");

</script>
</body>
</html>

  运行这段代码即可看到显示的姓名。

  2  javascript的方法可以分为三类:类方法,对象方法,原型方法。

看下面的代码:

<html>
<head>

</head>
<body>

<script type="text/javascript">

function People(name)
{
this.name=name;
//对象方法
this.Introduce=function(){
document.write("对象方法说:" + this.name + "<br \>");
}
}
//类方法
People.Run=function(){
document.write("类方法说:" + this.name + "<br \>");
}
//原型方法
People.prototype.IntroduceChinese=function(){
document.write("原型方法说:" + this.name + "<br \>");
}

//测试

var p1=new People("张三");

p1.Introduce();

People.Run();

p1.IntroduceChinese();

</script>

</body>
</html>

输出结果是: 张三    People   张三

至于类方法为什么会输出People?我也不知道为什么?

  3  prototype含义

javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。

  A.prototype = new B();理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。

<html>
<head>

</head>
<body>

<script type="text/javascript">
function baseClass()  //基类
{
this.showMsg = function()
{
     alert("baseClass::showMsg");   
}
}

function extendClass()  
{
this.fun = function()
{
    document.write("extendClass::Method");
}
}

extendClass.prototype = new baseClass();  //扩展类克隆基类所有的方法

instance = new extendClass();

instance.showMsg(); // 显示baseClass::showMsg
instance.fun();  //调用自己的方法

</script>

</body>
</html>

我们首先定义了baseClass类,然后我们要定义extentClass,但是我们打算以baseClass的一个实例为原型,来克隆的extendClass也同时包含showMsg这个对象方法。

 

  文章参考地址:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

posted @ 2012-07-31 11:49  金河  阅读(253)  评论(0编辑  收藏  举报