[JS]小子,快把函数们换成方法!

请先带着对标题说法的疑问,观察下面的两个片段。

//直接使用大函数
var outOm;
function om(n1,n2){
	outOm=n1*n2;
	alert(outOm);
	//console.log(outOm);
	return outOm;
}
om(2,3);
//putOm=6
//把函数套在对象里面
var outOm;
var nc = {//numerical calculation,数值计算
	first:null,
	om : function(n1,n2){
		putOm=n1*n2;
		alert(outOm);
		//console.log(outOm);
		return outOm;
	}
}
nc.om(2,3);
//outOm=6

实际上上面的两段代码的效果是一样的,都是计算两个传入函数/方法“om()”的参数的乘积并且反馈。
而它们有什么不一样呢?上面的函数是一个全局式函数,下面一个函数则是一个方法。

小芝士:
全局式函数就是一个放在全局环境而且嵌套层级为0的函数。换成一句人话来说,全局式函数就是放在整个代码体内的最外层的函数。

使用方法的优势比较(于全局式函数)多,一个更容易被人接受的优势就是——使用方法会比使用全局式函数更有仪式感。
(咳咳!)
如果只用全局式函数那么分类只能靠代码放置或命名,而这两个方式对于非同一人维护的代码,是及其不友好的。代码的放置倒是不容易乱,因为一般在开发前都会确认主体功能,再在划分的主体功能位置放置代码就可以保证代码的整齐。但对于长代码,这种代码放置位置来分类函数可行行为的方式就不太可行,因为要翻很久才能触到首尾,那么就更难定位,也就更难维护。命名就更恐怖了,分支功能越多,层数越深,按照“显性命名”的原则,就要求命名必须能够描述这个函数的功能,如果不使用方法,哪怕是驼峰式命名也够呛。

小芝士:
显性命名作者习惯的称呼这种命名模式的名字(绝对有语病),更符合这种命名模式的名称应该是“功能命名”,这指的是定义名描述定义物行为的命名模式。

而使用方法以上的问题就会迎刃而解了,虽然这样会导致缩进更复杂,但是比起直接使用函数,好处更多:最主要的是使用方法可以让引用更直观,便于分类与整理、调用。使用方法,就可以更加细分函数功能,统一修改主要功能名时更便利。请看事例:

//这里模仿的是一个网站的服务器文本功能,暂定为读取,写入,删除

//大函数
function textGet(){/*代码*/}
function textWriteIn(){/*代码*/}
function textUndownload(){/*代码*/}
//-//
//方法
var text = {
get:function(){/*代码*/},
writein:function(){/*代码*/},
undownload:function(){/*代码*/}
}

理论(这里指的是JS算法)上,对象内可以套理论无穷多个对象。所以一个对象里的方法也是理论无穷多的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值