位置: 编程技术 - 正文

javascript 面向对象编程 function是方法(函数)(javascript面向对象编程指南 pdf)

编辑:rootadmin
好程序不是写给computer的,而是写给human的。遇到复杂功能,应该想着把它简化、组件化,把小功能封装成小组件,小功能块可以任意的组合得到千变万化的复杂功能。function就可以帮助我们把功能进行封装。那什么是封装呢。要我说,只要把具体实现给打包,对外提供调用接口那就是封装,方法也好、类也好就做了这些事。

javascript中的function可以用来创建方法、也可以用来创建类,实际上我们可以认为是用function来模拟出的类(说到类一般都会要去了解闭包的知识)。还是先看一下方法吧。

javascript函数分为有名函数、匿名函数和在匿名函数基础上延伸出来的立即执行函数。

普通函数就是用function直接声明的有名函数。

function Hello() { alert("hello , everybody!"); }; Hello(); function SayHelloTo(somebody) { alert("hello , " + somebody + "!"); }; SayHelloTo("张三");

上面分别创建了Hello和SayHelloTo方法。Hello不带有参数,直接通过Hello()来完成调用。SayHelloTo方法带有一个参数,向谁问候时需要知道是在问候谁。在调用SayHelloTo(“张三”)时要传入参数。这些代码和java、C#都没有什么太大区别。在方法重载上却有较大改变,javascript本身并不支持什么重载,一个方法名就对应一个方法。如果强制的写出多个同名方法,其实会出现先写的方法被覆盖掉的情况。

function Hello() { alert("hello , everybody!"); }; Hello(); function Hello(somebody) { alert("hello , " + somebody + "!"); }; Hello("张三");

第一个Hello方法被覆盖掉,执行时直接调用Hello()则认为调用第二个Hello方法但没有传递参数值,所以弹出了undefined信息。调用Hello(“张三”)时很正常的完成执行。其实javascript也可以用一些直白的方式来完成重载。学过C#的人都会知道有个params关键字,通过它可以实现向方法传递不定个数的参数。我们可以通过对参数的信息做手动的判断也可以模拟出类似重载的效果。而在javascript中根本就不需要什么params关键字,就可以很自然的实现任意个数参数的传递。function中有个arguments属性,可以把它看成一个数组,它按传递进来的参数的顺序来保存所有的参数。也就是说我们在定义方法时可以不声明参数名。

function ShowArguments() { var args = ""; for (var i = 0; i < arguments.length; i++) { args += arguments[i] + ","; }; alert(args.substr(0, args.length - 1)); }; ShowArguments(1, 2, 3, 4, 5, 6, 7);

试着用argements来模拟一下重载。

function Hello() { if (arguments.length == 0) { alert("hello , everybody!"); } else { alert("hello , " + arguments[0] + "!"); }; }; Hello(); Hello("张三");

基于参数个数不同的重载。

function Increase(arg) { if (typeof arg == "undefined") { alert("请输入参数"); } if (typeof arg == "string") { alert(String.fromCharCode(arg.charCodeAt(0) + 1)); } if (typeof arg == "number") { alert(arg + 1); } }; Increase(); Increase("a"); Increase(1); 基于参数类型不同的重载。

函数除了有名函数之外也可以是匿名函数,匿名函数就是没有名子的函数,不论函数有名还是没有名子,都是一个完整的函数对象。匿名函数还是用function来声明,但不用为它指定名称。其它的方面,比如参数等等和有名函数没什么区别。

function() { …… };

匿名函数一般可以满足临时的函数需求,不需要有变量对其进行引用(有名的函数可以认为是有变量引用的函数)。比如需要一个函数做为值对象做为参数传入方法、需要编程的方式为对象添加事件,用匿名函数都可以很好的完成。当然你也可以单独声明变量来引用某个匿名函数对象,这和普通有名函数就没什么区别了。

function Each(array, fun) { for (var i = 0; i < array.length; i++) { fun(array[i]); }; }; var nums = [1, 2, 3, 4, 5, 6, 7]; Each(nums, function(arg) { alert(arg); });

上面代码执行,依次输出数组中的元素。

//在窗体加载时,在标题上显示当前时间 window.onload = function() { document.title = new Date().toString(); }; //也可以将匿名方法传入定时器中 setInterval(function() { document.title = new Date().toString(); }, );

使用匿名函数绑定事件和进行定时操作。

var Hello = function() { alert("hello , everybody!"); };

如果将匿名函数赋给变量,那和有名的普通函数就没区别了。但不管是变量引用还是普通地有名函数,这样的函数在内存上都持久的占有一定资源。有时候我们只想执行一次大不必使用有引用的函数,直接执行匿名函数可能是最好的选择。把匿名函数包起来,加个括号执行,一切ok,这就是由匿名函数延伸出来的立即执行函数。

(function() { alert("hello , everybody!"); })(); (function(somebody) { alert("hello , " + somebody + "!"); })("张三");

立即执行函数在做事件绑定,设置回调函数等方面往往会有意想不到的效果,可以解决诸如对象引用等问题。

var student = { Name: "张三", Age: , Introduce: function() { alert("我叫" + this.Name + ",今年" + this.Age + "岁了!"); } }; window.onload = (function(obj) { return function() { obj.Introduce(); }; })(student);

因为javascript中函数的这些特点加之它的对象的特征,我们还可以写出一些有functional意味的程序出来。其实javascript中function真的是老大。

function Sum(fun, x) { if (x <= 0) return 0; return fun(x) + Sum(fun, x - 1); }; alert(Sum(function(i) { return i * i; }, ));

下面这又是什么呢?是方法吗?是类吗?

function Point() { };

先??碌秸猓?麓卧倏纯蠢唷?/P>

推荐整理分享javascript 面向对象编程 function是方法(函数)(javascript面向对象编程指南 pdf),希望有所帮助,仅作参考,欢迎阅读内容。

javascript 面向对象编程  function是方法(函数)(javascript面向对象编程指南 pdf)

文章相关热门搜索词:javascript面向对象编程 PDF,javascript面向对象吗,javascript面向对象编程 PDF,javascript面向对象编程,javascript面向对象编程,javascript面向对象编程,javascript面向对象编程,javascript面向对象吗,内容如对您有帮助,希望把文章链接给更多的朋友!

学习JS面向对象成果 借国庆发布个最新作品与大家交流 首先引入一个jQuery的小问题jQuery在设置透明度上是有问题的,首先看一下其代码:Code//IEusesfiltersforopacityif(!jQuery.support.opacity&&name=="opacity"){if(set){//IEhastro

面向对象的javascript(笔记) 一、引用//产生一个数组对象varitems=newArray('1','2','3');//使一个引用指向该对象varitemRef=items;items.push('4');//items与itemRef指向同一对象alert(items.length===itemRef.le

JavaScript 核心参考教程 内置对象 这个标准基于JavaScript(Netscape)和JScript(Microsoft)。Netscape(Navigator2.0)的BrendanEich发明了这门语言,从年开始,已经出现在所有的Netscape和Microsoft浏览器中

标签: javascript面向对象编程指南 pdf

本文链接地址:https://www.jiuchutong.com/biancheng/386497.html 转载请保留说明!

上一篇:javascript 面向对象编程 聊聊对象的事(javascript面向对象编程)

下一篇:学习JS面向对象成果 借国庆发布个最新作品与大家交流(js面向对象编程实例)

  • 城建税和教育费附加减免政策
  • 城建税和教育费附加怎么写分录
  • 2021年专项附加扣除必须要确认吗
  • 建筑劳务公司做账分录
  • 安装服务费发票需要备注地址吗
  • 异地施工如何缴工会经费
  • 变更注册资本的股东会决议范本
  • 资金账簿印花税每年都要交吗?
  • 商贸公司账务复杂吗
  • 产品成本的归集和分配是什么意思
  • 金税盘费用如何抵扣
  • 预征税额是什么意思
  • 企业接受大额捐赠,可以分次确认收入缴纳企业所得税吗?
  • 个人二手房转让税费
  • 纳税人提供不动产经营租赁增值税征收管理
  • 海外仓储的税务风险你都清楚吗?
  • 产值指的是财务报表哪个数值
  • 资产处置损益的明细科目有哪些
  • 购买增值税专用发票会判刑吗
  • 企业把活承包给个人,和企业有劳动关系吗?
  • 应发工资包含罚款吗
  • 少计提增值税0.01计入营业外
  • 农业产品免税范围注释
  • 国外差旅费如何报销
  • 一般纳税人销售自己使用过的汽车
  • thinkphp 3.2.3 getshell
  • w7防火怎么开
  • openssh centos
  • 开机自动连接宽带怎么设置w11
  • Content-Disposition使用方法和注意事项
  • 业务招待费的税收金额怎么算
  • mapbox wms
  • 收到现金股利会影响利润吗
  • 资本公积转增资本金
  • 购买方收到红字发票如何冲成本
  • php pdo和mysqli
  • 劳动仲裁的调解款要扣税吗
  • php 文件系统
  • ls -lh命令
  • 收据能抵成本吗
  • 残保金补申报后处罚会自动取消吗
  • 税费减免政策2020
  • 坏账准备计提比例一般是多少
  • 负数发票开票条件?
  • 红冲的发票能不能取消
  • 以前年度计提的存货跌价准备本年销售了
  • 工地上购买的零食叫什么
  • 单位食堂不对外营业需不需要办理经营许可证
  • 民办非企业单位工会经费
  • 工程结算属于哪类账户
  • 建筑劳务企业应发民工工资年终未发是否进行纳税调整
  • 固定资产拆除怎么处理
  • 受疫情影响较大的上市公司
  • 建筑业暂估成本票来了后的账务处理
  • 资产负债表中没有其他应收款
  • 可转债举例说明
  • 分配利润给股东公司需要交税吗
  • 修筑公路的流程视频
  • 多收客户购置税怎么处理
  • 投资收益下期间怎么结转
  • 索引的基本原则
  • sql server使用的是什么逻辑模型
  • windows pe无法启动怎么办
  • linux 网站备份
  • windows10周年更新
  • win7桌面没有了怎么办
  • linux wc-l
  • 在linux操作系统中,/etc/rc.d/init.d
  • ie等级
  • 优质安卓应用
  • opengl快速入门
  • Python 正则表达式实现计算器功能
  • jquery设置图片大小
  • 医院票据怎么查询
  • 内蒙古网上税务登记流程
  • 为什么有的企业在企查查上查不到
  • 太原市地税局各分局局长
  • 对金融机构与小型企业
  • 安徽省国税局局长是谁
  • 湖南兴广地税务师事务所有限公司(兴广集团有限公司)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设