韩顺平 轻松搞定javascript第五章 面向对象编程2.ppt
《韩顺平 轻松搞定javascript第五章 面向对象编程2.ppt》由会员分享,可在线阅读,更多相关《韩顺平 轻松搞定javascript第五章 面向对象编程2.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级软件人才实作培训专家高级软件人才实作培训专家!北京传智播客教育 轻松搞定轻松搞定javascript-面向对象编程面向对象编程2讲师:讲师:韩顺平韩顺平email:qq:2317702760高级软件人才实作培训专家高级软件人才实作培训专家!主讲 韩顺平内容介绍内容介绍 js面向对象编程-三大特征 高级软件人才实作培训专家高级软件人才实作培训专家!学习目标学习目标1.理解封装和继承,多态主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!银行账号银行账号1银行账号银行账号2银行账号银行账号3银行账号银行账号n不管是哪中账号不管是哪中账号,是谁的账号是谁的账号都必须包括都必须包括,余
2、额余额,账号号码账号号码.也必须包括也必须包括:取款取款,存款存款.账号类账号类 Accountjs js面向面向(基于基于)对象编程对象编程三大特征三大特征 抽象 再讲解面向对象编程的三大特征前,我们先了解什么叫抽象,在定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板)。这种研究问题的方法称为抽象。主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!封装-什么是封装 封装就是把抽象出的属性和对属性的操作封装在一起,属性被保护在内部,程序的其它部分只有通过被授权的操作(函数),才能对属性进行操作。js js面向面向(基于基于)对象编程对象编程三大
3、特征三大特征主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!封装-访问控制修饰符 电视机的开关,对音量,颜色,频道的控制是公开的,谁都可以操作 ,但是对机箱后盖,主机板的操作却不是公开的,一般是由专业维 修人员来玩。那么在js中如何实现这种类似的控制呢?请大家看一个小程序.(Encap1.js),不能 随便查看人的年龄,工资等隐私.js js面向面向(基于基于)对象编程对象编程三大特征三大特征主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!function Person(pname,age)this.name=pname;/公开属性(变量)var age=age;/
4、私有属性(变量)/私有方法.function fun1()window.alert(hello);/公开函数(特权函数)this.fun2=function()/可以访问所有成员window.alert(this.name+age);fun1();请思考输出什么结果,为什么?var p1=new Person(顺平,90);p1.fun2();window.alert(p1.name);/p1.fun1();/错误window.alert(p1.age);/错误 封装 js提供有以下几种控制方法和属性的访问权限:公开级别:对外公开 私有级别:类本身可以访问,不对外公开.js js面向面向(基于
5、基于)对象编程对象编程三大特征三大特征主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!function Person(pname,page)this.name=pname;/公开属性(变量)var age=page;/私有属性(变量)/私有方法.function fun1()window.alert(hello);/公开函数(特权函数)this.fun2=function()/可以访问所有成员window.alert(this.name+age);fun1();var p1=new Person(顺平,90);/给所有对象添加公共方法 /不能调用私有变量和方法不能调用私有变量和方
6、法/原型法原型法Person.prototype.fun3=function()return“fun3()hello;/输出“fun3()hello”window.alert(p1.fun3();类名.prototype.函数名=function()这个也称为后置绑定.封装 从 prototype引出对构造函数模式创建对象的思考js js面向面向(基于基于)对象编程对象编程三大特征三大特征主讲 韩顺平l能不能给所有对象绑定一个属性值?高级软件人才实作培训专家高级软件人才实作培训专家!封装prototype的思考(摘选 阮一峰 网络文章 )4.构造函数模式的问题构造函数模式的问题构造函数方法很好
7、用,但是存在一个浪费内存的问题。请看,我们现在为Cat对象添加一个不变的属性type(种类),再添加一个方法eat(吃老鼠)。那么,原型对象Cat就变成了下面这样:function Cat(name,color)this.name=name;this.color=color;this.type=猫科动物;this.eat=function()alert(吃老鼠);还是采用同样的方法,生成实例:var cat1=new Cat(大毛,黄色);var cat2=new Cat(二毛,黑色);alert(cat1.type);/猫科动物cat1.eat();/吃老鼠 表面上好像没什么问题,但是实际上
8、这样做,有一个很大的弊端。那就是对于每一个实例对象,type属性和eat()方法都是一模一样的内容,每一次生成一个实例,都必须为重复的内容,多占用一些内存。这样既不环保,也缺乏效率。alert(cat1.eat=cat2.eat);/false能不能让type属性和eat()方法在内存中只生成一次,然后所有实例都指向那个内存地址呢?回答是可以的。5.Prototype模式模式 Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上。f
9、unction Cat(name,color)this.name=name;this.color=color;Cat.prototype.type=猫科动物;Cat.prototype.eat=function()alert(吃老鼠);然后,生成实例。var cat1=new Cat(大毛,黄色);var cat2=new Cat(二毛,黑色);alert(cat1.type);/猫科动物cat1.eat();/吃老鼠这时所有实例的type属性和eat()方法,其实都是一个内存地址,指向prototype对象,因此就提高了运行效率。alert(cat1.eat=cat2.eat);/true
10、js js面向面向(基于基于)对象编程对象编程三大特征三大特征主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!继承-为什么有?一个小问题,还是看个程序(Extends1.html)js js面向面向(基于基于)对象编程对象编程三大特征三大特征主讲 韩顺平高级软件人才实作培训专家高级软件人才实作培训专家!继承可以解决代码复用继承可以解决代码复用,让我们的编程更加靠近人类思维让我们的编程更加靠近人类思维.当当多个类存在相同的属性多个类存在相同的属性(变量变量)和方法时和方法时,可以从这些类中抽象可以从这些类中抽象出父类出父类(比如刚才的比如刚才的Student),Student),在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 韩顺平 轻松搞定javascript第五章 面向对象编程2 顺平 轻松 搞定 javascript 第五 面向 对象 编程
限制150内