我们先给一个例子,说明已经加在关键的地方了:

<html>
<script>
function myclass()
{
  
// 这里的name可以在以后的实例中访问
  this.name = "123";
  
// 内部变量,在外部不可以访问
  var x = 5;
  
// 内部方法,不可以在外部访问
  function privateFunc()
  
{
    alert(
'in private');
  }

  
// 公有方法,在外部可以访问,可以访问x
  this.PublicFunc = function()
  
{
    privateFunc();
    alert(
'x=' + x);
    alert(
'in public')
  }

  
// 公有方法,在外部可以访问,可以访问x
  myclass.prototype.PublicFunc2 = function()
  
{
    alert(
'x in public2=' + x)
    alert(
'in public2');
  }

}


// 公有方法可以在外部定义,可以在外部访问,不可以访问x
myclass.prototype.PublicFunc3 = function()
{
  
// 这里会出错,不运行
  //alert('x in public3=' + x);
}



var t = new myclass();
t.PublicFunc();
t.PublicFunc2();
t.PublicFunc3();
// t.x为underfind
alert(t.x);
alert(t.name)
</script>
<body>
</body>
</html>

从例子我们可以看到,prototype是的方便之处在于它可以在外部定义一个方法,不过熟悉c#编程的人都应该更偏向于在一个类对象的内部定义它的方法,就如PublicFunc2,而不是象PublicFunc3,当然。
人人都说prototype定义的方法是不能访问内部变量的,事实上好象不是这样,我们在内部定义的PublicFunc2就可以访问x
综上,我们得出,this就是定义public变量或者方法的,var 定义的只是内部变量,只有在它的作用域中,我们才可以访问。至于prototy,可以在外部添加公有方法或变量(不知道这样有什么好处),在内部创建时是可以访问内部private变量的。此外prototype可以用于类的继承,如class1.prototype = class2; =>class1继承于class2
posted on 2008-07-13 18:52  蜡笔旺旺  阅读(383)  评论(0编辑  收藏  举报