JavaScript高3.ppt_第1页
JavaScript高3.ppt_第2页
JavaScript高3.ppt_第3页
JavaScript高3.ppt_第4页
JavaScript高3.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、javascript、javascript、面向对象的编程javascript的所有数据都可以视为对象,但我们不使用面向对象的编程。 Number、Array、string和基本.只有定义的对象不能发挥面向对象编程的威力。 JavaScript面向对象的编程与许多其他语言(如Java、C# )的面向对象的编程不同。 如果熟悉Java或C#,则需要了解面向对象的两个基本概念。 类是对象的类型模板。 例如,定义Student类来表示学生,类本身是类型,Student表示学生的类型,但不表示特定的学生。 实例:实例是从类创建的对象。 例如,可以从Student类创建多个实例,如小明、小红和小俊。 每

2、个实例代表属于Student类型的特定学生。 由于javascript、面向对象的编程,类和实例是许多面向对象的编程语言的基本概念。 但是,JavaScript需要更改这个概念。 JavaScript不是区分分类和实例的概念,而是通过原型实现面向对象的编程。 原型是指,想要创建名为小明的具体学生时,Student类型不可用。 怎么办才好,正好有这样的既成对象。 我们这个机器人对象有名字,有身高,还能跑。 类似于小明,可以根据它创建小明var Student=name: Robot、height: 1.2、run 3360 function () console.log (is

3、running.) var小小Ming=name 3360小明小小Ming._ _ proto _ _=student javascript,面向对象的编程注意最后一行的代码是,小明的原型面向对象Student,小明仿佛是从Student继承下来的:小明. name; 小明小明(); /小明is running.小明有自己的name属性,但没有定义run ()方法。 但是,因为小明是从Student继承的,所以如果Student具有run ()方法,则小明可以调用:Javascript, 面向对象的编程javascript的原型链与java的类没有区别如果将小明的原型面向其他对象: var b

4、ird=fly 3360 function () console.log (this ; 小明. _ _ _=生命; 小明再也不能run ()了。 他已经变成鸟了。 小翔. fly (); /小明您可以在运行isflying.javascrip代码时将小明从Student更改为Bird,也可以更改为任意对象。javascript、面向对象的编程注意事项:不要直接在obj._proto_中更改对象的原型。 旧版本的IE不能使用_proto_版本。 Object.create ()方法传递原型对象,并基于该原型创建新对象,但由于新对象没有属性,因此Xiaoming:var student=name

5、 3360 robong 基于functioncreatestudent (name )/student原型创建新图像: var s=object.create (student ); /初始化新对象: =name。 返回s; var小明=createstudent (小明)小明. run (); 小明is running.小明. _ _ _=student /true这是创建原型继承的方法。 javascript,创建对象javascript为要创建的每个对象设置原型,并指向该原型对象。 使用obj.xxx访问对象的属性时,JavaScript引擎首先在当前对象中查找该属性,如果

6、找不到则在该原型对象中查找,如果找不到则在Ototype vararr=1,2,3; 在原型链中,arr- totype- totype-空阵列. prototype定义了索引javascript,创建对象创建函数时: function foo() return 0; 函数也是对象,其原型链是foo- totype- totype- null是function .原型链越长,访问对象的属性就越慢javascript和构造函数不仅可以直接用. 创建对象,而且javascript还可以用构造函数的方

7、式创建对象。 它的用法是首先定义构造函数。 函数标准(名称) =name; this.hello=function ()警报(hello,! ); 这不是一般的函数吗? 这确实是一个普通函数,但JavaScript可以使用关键字new调用函数,并返回名为var xiaoming=new Student (小明)的对象; 小明小明. hello (); 小明,小明! 如果不写javascript、构造函数注意事项和new,这是返回undefined的常规函数。 但是,如果写new,则绑定指向新创建对象的this,并成为缺省情况下返回t

8、his的构造函数。 也就是说,最后不需要写return this。 新创建的小明原型链是小明,如果创建了小红、小俊,它们的原型就和小明一样。 totype -空小jun构造函数使用new Student ()创建的对象, 函数Student本身(Xiaoming.constructor=指向totype .的constructor属性也是从原型中获取的/totype.constructor /true object.getprototypeof (小型)=st

9、totype /truexiaominginstanceofstudent; /true我们认为目前小明、小洪等对象是从Student“继承”的。 javascript和构造函数还有一个小问题。 注意观察:小明. hello; /function : student.hello ()小豪ONG.hello; /function : student.hello () Xiaoming.hello=Xiaohong.hello /false小明和小红各自的名字不同。 否则,就无法区分谁是谁。 hello是一个函数,但是函数名称和代码相同,但是如果使用两个不同的函数new Stud

10、ent ()创建了大量对象,则这些对象的hello函数实际上只需共享相同的函数,从而节省了大量内存。 javascript和构造函数可以基于对象的属性搜索策略将hello函数移动到对象共同的原型(诸如小型、小型),以便使创建的对象共享hello函数。 也就是说,totype:full totype.hello=function ()警报(hello,! ); javascript和构造函数调用构造函数不要忘记new。 为了区分常规函数和构造函数,构造函数的首字母必须大写,而常规函数的首字母必须小写。 您可以编写createStude

11、nt ()函数来内部封装所有new操作。 典型的编程模式是函数标准(props ) =|匿名; 默认值为匿名this.grade=props.grade | 1; /默认值为1 totype.hello=function () alert (hello,! ); 名为functioncreatestudent (props ) return new student (props|)、javascript和构造函数的createstudent ()函数具有许多重大优势。 小明.格拉德; /1如果创建的对象具有大量属性,

12、则只能传递所需属性的一部分,其馀属性可以使用默认值。 因为残奥仪表是Object,所以不需要记住残奥仪表的顺序。如果刚从JSON那里收到对象,可以直接创建小明。 练习:使用构造函数定义Cat,使所有Cat对象具有name属性,共享方法say ()并返回字符串Hello,xxx。javascript、原型继承由于采用了javascript原型继承,因此不存在其他编程语言Class类型,无法直接扩展Class。 但是,方法还是有的。 首先检查Student构造函数:函数student (props ) =| unnamed; totype

13、.hello=function ()警报(hello,! ); 要基于Student扩展主Student,请首先定义主Student :函数主student (props )/student构造函数,然后绑定this变量3360student javascript,原型继承了,但是调用Student构造函数与继承Student不同。 PrimaryStudent创建的对象的原型是newprimarystudent ()-primary totype- totype。 原型链是正确的,例如-primary toty

14、pe- totype- totype- null。 基于新的PrimaryStudent创建的对象不仅可以调用PrimaryStotype中定义的方法,还可以调用Stotype中定义的方法。 primary totype=totype; 不行!javascript、原型继承PrimaryStudent和Student共享原型对象,没有定义PrimaryStudent的意义。 可以在指向Stotype的中间对象中实现。 参照道格拉斯(发明了JSON的道格拉斯)的代码,中间对象可以用空函数f实现。 /PrimaryStudent构造函数:函数化运算符(props ) student.call this.grade=props.grade| 1; 将/空函数F: function F() /的原型定向到toty

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论