考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:设计制作 > JavaScript > 文章内容
  

javascript面向对象编程之四function也是”类”

 [ 2017年9月4日 ] 【

  function在javascript中用来创建函数或方法,但要想实现面向对象方式的编程,类是不可或缺的角色之一,而且是主角。但javascript中并没有类概念,所谓的类也是模拟而来,通过函数加闭包模拟出类成员及私有成员(关于闭包可以参见跨越边界: 闭包)。这里我们将用比较平实的方式来了解一下javascript中的”类”,避开一些生硬的原理。

  既然是用function来模拟类,所以编写代码创建类的关键字还是function。我们创建一个座标点类。

  function Point() {

  this.X = 0;

  this.Y = 0;

  };

  var zeroPoint = new Point();

  alert("当前座标值( X:" + zeroPoint.X + " , Y:" + zeroPoint.Y + " )");

  大家都知道非静态类成员的访问需要通过对象来完成,所以先new出了一个Point类型对象,再通过该对象完成X和Y轴座标值的访问。从语法上来说,javascript类对象的创建过程和C#等差不多,但实现机制却不相同。这里的new创建出了一个Object,后续的Point()函数执行时将其this指向了这个新的Object对象。Point中的this.X和this.Y是Point类的两个公共成员,所以Point的对象可以直接对它们进行访问。

  说到类成员或对象的成员,免不了要提到可访问性的问题。在javascript的类中,也有public成员和private成员之分,但究其细节却不尽相同。javascript私有成员也是些在类外部不可以通过对象进行操作的成员,其实在类的内部成员之间私有成员也不定能被访问。在类的内部一般只有私有成员和私有成员之间可以互相的访问,你可以认为其它成员权限不够不能操作这些隐私的东西,但如果你有特权,那就不一样了,管它私有公开照用不误。私有成员变量和普通变量声明一样,用var关键字,私有方法可以用var声明变量来接收方法对象,也可以像普通方法那样去构建。

  function Lady() {

  var age = 30;

  var name = "菜花";

  var think = function() {

  alert("其实我今年" + age + "岁。");

  };

  function fancy(){

  alert("幻想变成20岁。");

  };

  this.Introduce = function() {

  alert("我叫" + name + " , 今年20岁。");

  };

  };

  var younglady = new Lady();

  alert(younglady.age);//结果undefined

  younglady.think(); //不支持

  younglady.fancy(); //不支持

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved