JS 面向对象的小杂碎

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 15:45 点击:

封装:通过将一个方法或者属性声明为私有的,可以让对象的实现细节对其他对象保密以降低对象间的耦合程度,可以保持数据的保证性并对其修改方式加以约束,这样可以使代码更加可靠,更加易于调试。封装是面向对象的设计的基石。。。

但是javascript不具备将成员声明为公用或私用的任何内部机制,所以我们只能自己想办法实现这种特征。

私有属性和方法:函数有作用域,在函数内用var声明的变量在函数外部是无法访问的,私有属性和方法本质就是你希望在对象外部无法访问的变量。

特权属性和方法:创建属性和方法时使用的this关键字,因为这些方法定义在构造函数的作用域中,所以他们可以访问到私有的属性跟方法,只有那些需要直接访问私有成员的方法才应该呗设计为特权方法。

公用属性和方法:直接在prototype上定义的属性跟方法,不可以访问构造器内的私有成员,可以访问特权成员,子类会继承所有的共有方法跟属性。

共有静态属性跟方法:最好的理解方式就是把它想象成一个命名空间,实际上相当于把构造器作为一个命名空间来用。

 01 // 封装 

02   

03 var _packaging = function() { 

04     //私有属性和方法 

05     var name = 'Darren'; 

06     var method = function() { 

07   

08     }; 

09     // 特权属性和方法 

10     this.title = 'Javascritp'; 

11     this.getName = function() {return name; }; 

12 }; 

13   

14 // 共有属性跟方法 

15 _packaging.prototype = { 

16     init: function() {} 

17 }; 

18   

19 // 共有静态属性跟方法 

20 _packaging._name = 'Darren'; 

21 _packaging.alertName = function() {alert(_packaging._name);};

继承:在javascript中实现继承有两种方式:类式继承跟原型式继承。例子:

view sourceprint?01 /* -- 类式继承 -- */

02    //先声明一个超类 

03    function Person(name){ 

04      this.name = name; 

05    } 

06   //给这个超类的原型对象上添加方法 getName  

07    Person.prototype.getName = function(){ 

08       return this.name; 

09    } 

10    //实例化这个超类 

11   var a = new Person('Darren1') 

12    alert(a.getName()); 

13    //再声明类 

14    function Programmer(name,sex){ 

15       //这个类中要调用超类Person的构造函数,并将参数name传给它 

16      Person.call(this,name); 

17       this.sex = sex; 

18    } 

19    //这个子类的原型对象等于超类的实例 

20    Programmer.prototype = new Person(); 

21    //因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数,你可以自己测试一下,如果没这一步,alert(Programmer.prototype.constructor),这个是Person超类的引用,所以要从新赋值为自己本身 

22    Programmer.prototype.constructor = Programmer; 

23    //子类本身添加了getSex 方法 

24    Programmer.prototype.getSex = function(){ 

25       return this.sex; 

26    } 

27   //实例化这个子类 

28    var _m = new Programmer('Darren2','male'); 

29    //自身的方法 

30   alert(_m.getSex()); 

31    //继承超类的方法 

32    alert(_m.getName());


view sourceprint?01 /* -- 原型式继承 -- */

02    //clone()函数用来创建新的类Person对象 

03    var clone = function

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1