谁动了我的代码

抽象即是空,空即是抽象。
posts(43) comments(24) trackbacks(0)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

News

所有文章版权归我所有,转载请注明出处,谢谢!

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • Android开发(5)
  • C/C++(1)
  • DataBase(3)
  • Java(16)
  • JavaScript(14)
  • WEB前端(1)
  • 编程杂项(2)
  • 网络(1)

随笔档案

  • 2016年5月 (1)
  • 2011年2月 (1)
  • 2010年6月 (3)
  • 2010年5月 (1)
  • 2009年12月 (2)
  • 2009年11月 (1)
  • 2009年10月 (2)
  • 2009年6月 (2)
  • 2009年5月 (1)
  • 2009年4月 (2)
  • 2009年3月 (4)
  • 2009年2月 (1)
  • 2009年1月 (1)
  • 2008年12月 (1)
  • 2008年11月 (1)
  • 2008年10月 (4)
  • 2008年9月 (2)
  • 2008年5月 (5)
  • 2008年3月 (3)
  • 2007年12月 (2)
  • 2007年10月 (1)
  • 2007年9月 (2)
  • 2007年5月 (1)

搜索

  •  

最新评论

  • 1. re: Android之ImageView载入网络上的图片
  • 222222222222222222222
  • --2222222222222222222222222222
  • 2. re: Log4j自带Log Viewer的用法
  • 执行你的根本不行,乱错帖子就在这乱贴,tmd
  • --asdf
  • 3. re: Android之使用私有存储
  • getDir方法创建的文件,会有个app_前缀,请问这怎么去掉呢?
  • --就是宝宝
  • 4. re: Android通用事件造成的生命周期变化情况
  • 我相信以后Android将成为越来越多设备的OS,不光是手持上网设置,冰箱、洗衣机都有可能采用Android。
  • --淘宝网女装春装新款
  • 5. re: Android通用事件造成的生命周期变化情况
  • 不错
  • --歌瑞尔内衣

阅读排行榜

评论排行榜

View Post

面向对象的JavaScript (一、对象基础,使用函数来模拟类)

通过一个例子可以很直观的表述本主题,所以没有任何其他的说明文字,请看代码吧。
  1function Person(name, age) {
  2
  3    //私有变量(private variables)
  4    var myName = name;
  5    var myAge = age;
  6
  7    //公共属性(public properties)
  8    this.name = myName;
  9    this.age = myAge;
 10    
 11    //私有函数(private functions)
 12    function getMyName() {
 13    return myName;
 14    }
;
 15    
 16    function getName() {
 17    return name;
 18    }
;
 19    
 20    var getMyAge = function () {
 21    return myAge;
 22    }
;
 23    
 24    var getAge = function () {
 25    return age;
 26    }
;
 27    
 28    //特权方法(privileged methods)
 29    this.getName = function () {
 30    return this.name;
 31        //return myName;       可以访问私有变量
 32    //return name;         可以访问构造函数参数(其参数本质也是私有变量)
 33    //return getMyName();  可以访问私有函数
 34    //return getName();    可以访问私有函数
 35    }
;
 36    
 37    this.getAge = function () {      
 38    return getAge();   
 39    }
;
 40    
 41    this.getRealAge = function () {
 42    return this.age;
 43    }
;
 44}

 45
 46//公共方法(public methods)
 47Person.prototype.acceptName = function (param) {
 48    this.name = param;
 49    //name = param;       公共方法不能访问私有变量
 50    //myName = param;     公共方法不能访问私有变量
 51}
;
 52
 53//原型属性(prototype properties)
 54Person.prototype.legs = 2;
 55
 56//静态属性(static properties)
 57//整个类只有一个静态属性,各个对象共享同一个静态属性值
 58Person.arms = 2;
 59
 60Person.getArms = function () {
 61    return Person.arms;
 62    //return this.arms;   可以使用this来指代Person对象本身
 63}
;
 64
 65/**//*
 66Person是一个逻辑上的类,他的本质是一个Function,在JavaScript中类是由Function来模拟的,所以Person还是一个Function的实例。而arms和getArms方法是一个Function对象实例上的属性和方法,是Person对象所特有的,所以本例可以使用Person.arms来引用,同时在getArms方法中,可以使用this.arms来引用,因为getArms是Person对象上的方法,在该方法内部this指代Person对象自身。
 67*/

 68alert(Person.getArms());
 69
 70var pa = new Person("Teddy", 25);
 71
 72//alert(pa.myName);  不能访问私有变量
 73
 74alert(pa.name);
 75
 76alert(pa.getAge());
 77
 78pa.acceptName("Born");
 79
 80alert(pa.getName());
 81
 82var pb = new Person("John", 18);
 83
 84//运行时动态加入方法
 85Person.prototype.acceptAge = function (param) {
 86    this.age = param;
 87}
;
 88
 89//pb对象也可以调用动态添加的方法
 90pb.acceptAge(30);
 91
 92alert(pb.getAge());
 93
 94alert(pb.getRealAge());
 95
 96//运行时覆盖已定义方法
 97Person.prototype.acceptName = function (param) {
 98    return param;
 99}
;
100
101//所有已创建对象都自动继承被覆盖的方法
102alert(pa.acceptName("Black"));
103
104alert(pa.getName());
105
106alert(pa.legs);
107
108//运行时改变原型属性值
109Person.prototype.legs = 4;
110
111//所有已创建对象都自动继承被改变的原型属性值
112alert(pb.legs);
113
114//运行时将原型属性改为公共方法
115Person.prototype.legs = function () {
116    return 4;
117}
;
118
119//所有已创建对象都自动继承原型属性到公共方法的改变
120alert(pa.legs());

posted on 2008-09-03 19:09 Eric Song 阅读(1291) 评论(1)  编辑  收藏 所属分类: JavaScript

View Comments

# re: 面向对象的JavaScript (一、对象基础,使用函数来模拟类)  回复  更多评论   
不错,等待下一篇
2008-09-04 11:28 | HiMagic!
新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
相关文章:
  • 关于样式表对象style与currentStyle的区别
  • 关于JavaScript的cloneNode方法对于节点上的事件clone问题的研究。
  • 参考Prototype的Class.create写了一个类似的实现,但是不是Ruby like OOP,使用上更像Java。
  • 对JavaScript的变量作用域的理解
  • IE document compatMode
  • JavaScript对form及form中的引用。
  • JavaScript注意事项(不定期更新)
  • 在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的实例对象
  • JavaScript 类型转换注意事项
  • 面向对象的JavaScript(二,TSS上的一篇文章,先借鉴一下)
 
 
Powered by:
BlogJava
Copyright © Eric Song