已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
阅读至17页一、 概述1二、 面向对象的javascript11. 语言特性1a. 类型检查1b. 作用域2c. 闭包2d. 上下文对象32. 面向对象基础4a. constructor属性4b. 公共方法5c. 私有方法5d. 特权方法51、 概述2、 面向对象的javascript1. 语言特性一个健全的web应用程序应该是分离式的,即在浏览器不支持javascript的情况下仍能正常的工作。引用是指向对象实际位置的一个指针。多个引用可以指向同一个对象,javascript中对象的属性可以任意扩展。javascript中用push方法来给数组对象添加新的元素,元素可以无限添加。因为数组其实是把这些值当成属性保存。引用只能指向具体的对象,不能再指向另一个引用。javascript的每一个函数都有一个仅在这个函数范围内作用的变量(arguments),他是一个包含所有传给函数的参数的伪数组,arguments不能修改,可以访问其中的元素,也具有length属性。javascript中有重载的间接实现。a. 类型检查javascript中两种类型检查的方法:typeof操作符(当变量不是object或者array类型时,这是最完美的解决方法)typeof i=string;typeof num=number;使用构造函数来判断对象的类型i.constructor=String;i.constructor=Array;一个函数可以严格的检测传入函数的所有参数:function strict(types ,args)/保证类型的数量和参数的数量匹配if(types.length!=args.length)/否则抛出一个异常throw 需要参数数量+types.length+,接收到参数数量:+args.length;/遍历所有数组,检查他们的类型for(var i=0;iargs.length;i+)if(argsi.constructor!=typesi)throw 参数需要的类型:+typesi+,接受到的类型:+;b. 作用域Javascript里,作用域是由函数划分的,而不是由块划分的(比如while,if,for中间)。所有处于全局作用域的的变量都其实都是window对象的属性(property)。var test=hello;/一个全局的变量alert(window.test);如果变量没有显式定义,它就是全局定义的。function fun()foo=hello;/foo未声明fun();alert(window.foo=hello);c. 闭包闭包(closure)意味着内层的函数可以引用存在于包围他的函数内的变量,及时外层的函数的执行已经终止。function delayedAlert(msg,time)setTimeout(function()alert(msg);,time);delayedAlert(hello,2000);在一些函数式程序设计语言中,有种成为Curry化的技术。本质上curry化是通过把多个参数填充到函数体里,实现将函数转换为一个新的经过简化的(使之接受的参数更少)函数的技术。/用闭包实现的函数curry化/数字求和函数的生成器。function addGenerator(num)/返回一个函数,求两个数的和return function ( toAdd)return num+toAdd;/声明一个函数,这个函数能求得5加上参数的和。var addFive=addGenerator(5);alert(addFive(2);使用匿名函数来隐藏全局作用域(function ()/变量原本应该是全局的var msg=hello;/将一个新函数绑定到全局对象window.onunload=function ()/这个函数使用了“隐藏的”msg变量alert(msg);)();d. 上下文对象在javascript中,你的代码总是有一个上下文对象(代码处在该对象内)上下文对象是通过this变量体现的,这个变量永远指向当前代码所出的对象中。全局对象是window对象的属性。Call方法Call方法将上下文对象(this)设置为第一个参数,并将其他参数作为原函数的参数。function changeColor(color)this.style.color=color;var txt=document.getElementById(txt);changeColor.call(txt,red);2. 面向对象基础var obj=new Object();/给这个对象一些属性obj.val=5;obj.click=function()alert(hello);/这是一段等价代码,用.简写方式,结合键值对来定义属性var obj=/用键值对方式来设置属性名和属性值val:5;click:function()alert(hello);a. constructor属性和大部分面向对象的语言不同,javascript并没有类的概念。Javascript里对象本身可以用来创建新对象,而对象也可以继承自其它对象,这个概念称为【原型化继承】。任何函数都可以被实例化为一个对象。function User(name)=name;/指定名称来创建该函数的一个新对象var me=new User(MyName);/我们可以看到这对象的名称被设为自身的那么属性了alert();/而且这是User对象的一个实例alert(me.constructor=User);constructor 属性在每个对象中都存在,并一直指向创建它的函数。function User(name)=name;/指定名称来创建该函数的一个新对象var me=new User(MyName);/创建一个新的User对象(用前一个对象的Constructor引用来创建)var you=new me.constructor();b. 公共方法公共方法在对象的上下文中是最终用户使用可以接触到的。每个对象中都有一个对象原型(prototype),给原型添加属性的结果是由该原型实例化的的每个对象都会获得这些属性,也就是这些属性公有化了。 /创建一个新的User构造函数 function User(name) =name; /将一个新的函数添加到此对象的prototype对象中 Utotype.getName=function() return ; ; /实例化一个新的User对象 var a=new User(a); alert(a.getName();c. 私有方法私有方法和私有变量只允许其他的私有方法和私有变量、特权方法访问。 function Classroom(students) this.students=students; function disp() alert(students); disp(); var a=new Classroom(刘大江,郭江超);d. 特权方法指查看并处理对象中私有变量的同时允许用户以公共方法的方式访问的方法。 function User(name,age) /尝试计算出生年月 var year=(new Date().getFullYear()-age; /创建一个特权方法,能够访问year变量,同时自身属于公共访问的 this.getYearBorn=function() return year; ; var user=new User(Bob,44); alert(user.getYearBorn();特权方法是动态生成的,因为它们是在运行的时候才添加到对象中的,而不是代码在第一次编译时就生成的。虽然这个技巧比prototype上绑定一个简单的方法开销更大,但是功能也更强大,更灵活。 /动态生成方法的例子,这些方法在新的对象实例化时创建 function User(properties) /遍历该对象的所有属性,并保证其作用域正确 for(var i in properties) (function(which) var p=i; /创建此属性的一个新的读取器(getter) whichget+p=function() return propertiesp; ; /创建此属性的一个新的设置器(setter) whichset+p=function(val) propertiesp=val; ; )(this); /创建一个新的用户对象实例,并把具有两个属性的一个对象传入作为种子 var user
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋清退结算协议书
- 房屋私人协议书模板
- 房屋维修建设协议书
- 房屋自愿托管协议书
- 房屋装修签约协议书
- 房屋贷款使用协议书
- 房屋转租双方协议书
- 房屋重建合同协议书
- 房屋领子购买协议书
- 房间车辆租赁协议书
- 广东省惠州市2024-2025学年高二上学期期末数学试题(含简单答案)
- 监控安装合同监控安装合同协议书
- 国网考试计算机机基础复习题库
- 中职高教版(2023)语文职业模块-第一单元1.1七律二首-送瘟神【课件】
- 统计学第8章 相关与回归分析课件
- 2025年全国普通话水平测试35套复习题库及答案
- 鲁东大学《食品质量控制与管理》2023-2024学年第一学期期末试卷
- 社会化工会工作者考试试卷及答案
- 医院专业技术职务聘任管理办法
- 《BIM技术在施工质量安全管理中的应用及案例研究》8500字(论文)
- 【MOOC】中国传统家具欣赏-北京林业大学 中国大学慕课MOOC答案
评论
0/150
提交评论