




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaScript面向对象(4)学习目标:1、知道什么是原型对象2、知道原型对象的特点3、知道原型链的查找方式4、能够扩展内置对象5、掌握实际开发中创建类或对象的方式6、知道js中私有属性和静态属性是如何定义的7、能够实现js对象的继承8、掌握forin遍历数组或对象9、掌握常用的顶层函数复习1、符合json格式的对象其实在js中有一个对象,它的名字就是JSON,这个对象和学过的String、Array等内置对象一样,也是存在的。json也是一种语言,它经常用于传输数据,保存数据等,它的功能和xml可以互换。json语言和JavaScript的关联点是json语言的写法和JavaScript中的数组或对象的写法一致。js中的数组写法:apple, pear;name:zhangsan, age:22, name:lisi, age:20, name:wangwu, age:12;js中的对象写法:name:zhangsan, age:22, intro:170, 65kg;2、自定义对象function Girl()/下面如果实例化了这个函数,那么这个函数就是构造函数,或者叫做构造器this.eyes = 大;this.fn = function()console.log(this.eyes); /成员方法中可以调用当前“类”中的成员属性;var sunli = new Girl(); /实例化构造器,得到一个对象。3、IE浏览器和火狐浏览器中获取事件对象的方法hellovar p = document.getElementsByTagName(p)0;p.onclick = function(x)x就是火狐下的事件对象,和window.event一点关系都没有IE中用window.event获取事件对象,和形参x一点关系都没有。var a = window.event|x; /这句话是兼容各个浏览器的获取事件对象的方法一、原型(原型链)1、原型对象原型对象,也是一个对象;原型对象用于保存同一个构造器的多个实例的共有方法。通过构造器的prototype属性可以找到构造器的原型对象;可以通过constructor属性找到原型对象的构造器;构造器和原型对象的关系如下:2、原型链原型对象上的成员会被构造器的所有实例所拥有(除了覆盖的情况)。3、扩展内置对象我们所学的String、Array等对象实际上JavaScript内置了String、Array等构造器。我们所学习的String中的substr等一系列方法都是String构造器的原型对象上的方法。比如内置的String对象中没有一个首字母大写的方法,我们可以自己添加一个。我们自己添加一个ucfirst方法,也应该添加到String的原型对象上。4、DOM对象的原型对象所有的DOM对象的原型对象都是Object对象。三、定义“类”或对象多种方式w3c手册位置:上面JavaScript 左侧的JavaScript 到页面最下方点击“马上学习JavaScript高级教程吧” 左侧找到定义类或对象。1、构造方法方式问题是这种方式创建的多个对象,会在内存中生成多个相同的空间,比较浪费内存。解决的办法是使用原型对象方式。2、原型对象方式使用纯原型对象方式定义的弊端:3、混合方式(构造函数+原型对象)原则是把对象的所有成员属性都放到构造函数中,把所有的成员方法都放到原型对象上。4、动态混合方式有些人认为上面的混合方式,看起来并不像php中的类,而是希望将成员属性和成员方法全部放到一个大括号中,所以出现了下面的动态混合方式。5、实际开发中,到底使用哪种方式定义类或对象如果根据构造器只实例化一个对象,那么直接使用构造函数方式。如果根据一个构造器实例化多个对象,那么使用混合方式或者动态原型方式。如果只是使用一个对象,这个对象用于配置、参数等,那么直接使用直接量语法(name:anc)最方便。四、私有和封装在JavaScript中,没有类,那么只能模拟私有的成员。五、静态属性和方法PHP中调用静态成员的方式是 类名:静态成员JavaScript中,如果有静态成员,该如何调用呢? 答: 构造函数.静态成员。六、继承1、原型链方式继承通过指定构造函数的原型对象方式,可以实现继承。2、对象冒充方式继承1、原始的对象冒充2、call和apply完成继承由于使用对象冒充的开发者比较多,所以在ES3中,js设计者提供了两个方法(call和apply),专门用于对象冒充。语法:A.call(); /不给参数,表示使用全局对象windowA.call(b); /b对象冒充A中的thisA.call(b, 参数1,参数2,.); / 参数1和2是传递给A函数的apply和call方法用法基本一致,只是传递参数的时候,后面不是一个个的传递,而是以数组的方式传递的。使用call方法并传递参数:使用apply方法并传递参数:和使用call方法不同的是,在给父类(A)传递参数的时候,apply传递一个数组。3、实际开发中,使用哪种方式实现继承答案是两者都用,对于成员属性,使用对象冒充的方式,对于成员方法使用原型链的方式。七、forin用来遍历数组和对象,和PHP中的foreach比较像。for(x in array/object)x表示数组的下标或对象的成员名arrayx表示数组的每个成员objectx表示对象的每个成员用forin可以遍历数组或对象,也可以用forin实现继承。八、顶层函数w3c手册:上面的JavaScript 左侧的JavaScript 右侧的参考书 左侧的Functions顶层函数也就是全局函数,这些函数不属于任何一个对象,在任何位置都可以直接调用。encodeURI() 把字符串编码为 URI。这个函数不会对“;/?:&=+$,#”符合进行编码的decodeURI() 解码某个编码的 URI。encodeURIComponent() 把字符串编码为 URI 组件。这个函数会对“;/?:&=+$,#”进行编码decodeURIComponent() 解码一个编码的 URI 组件。 eval() 计算 JavaScript 字符串,并把它作为脚本代码来执行。isNaN() 检查某个值是否是数字。 NaN表示非数字,isNaN用来检测某个值是否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 力学小考试题及答案
- 广东高升专自考试题及答案
- 中级食品安全员考试题库及答案解析
- 矿山生态考试题及答案
- 口琴曲目考试题及答案
- 肯德基岗位考试题及答案
- 科目全集考试题及答案
- 句容餐饮考试题及答案
- 静物组合考试题及答案
- 2025年中国弹力棉睡衣数据监测研究报告
- 2025年Q2起重机司机模拟考试题库(附答案)
- 4.1水资源及其利用(第2课时)-九年级化学人教版上册
- 2025年质量月知识竞赛题库含答案(初赛)
- 2025年共青团员必背的130个重点知识汇编
- 村两委会议制度管理制度
- 关于磁的课件
- 瘘病的护理查房
- 公路汛期安全培训
- AII6000B呼吸机的使用
- 液位计考试试题及答案
- Unit 4 Amazing Plants and Animals Section A 课件 人教版英语八年级上册
评论
0/150
提交评论