入职第一天小记

  对于初入前端的程序猿来说,对于函数的理解与使用可谓是相当浅薄的,回顾这自己近几年的工作以及学习经历,准备对JavaScript来个系统的总结.

  如果要我们对H5中的表单做个简单的校验,我想对于初入前端的童鞋来说都会是这样的表情与心态:

  A:哎呀,不就是个表单验证嘛!

  B:这个也算是问题么,so easy!

  C:哇哦,就这个啊

  D:...............

  所有的童鞋都带着不屑的眼神与骄傲的姿态拿起笔刷刷刷的写下了如下coding:

  function check_phone(){
//逻辑代码
 }
 function check_age(){
//逻辑代码
}
function check_sex(){
//逻辑代码
}

  刷刷刷的抱着激动的心情准备去提交代码,就在这时童鞋们的背后蹭的一下冒出一个人(有着近六七年的工作经验的大牛),且慢!众人皆惊讶,

  曰:why?

  大牛:你看你们写的这些方法,虽然没有什么大的问题,但是无形中却创建了大量的全局变量

  童鞋:有吗,这个不全部是函数吗,莫非函数也是变量??????

  大牛:笑着便拿起笔刷刷刷的写出如下code:

var check_phone = function(){

}
var check_sex = function(){ }
var check_age = function(){ }

  童鞋:这不才是声明了全局变量吗?

  大牛:对啊,那只是把变量给提前声明了而已,而你们写的那种只是把变量给放到了function后面声明,难道这就不是声明了三个全局变量吗

  童鞋:那这样有什么问题吗?

  大牛:最大的问题便是在你多人协作开发的时候如果创建了多个全局变量的时候,在其他同事进行开发的时候会对你的方法进行覆盖(几率提高)

  童鞋:恍然大悟。。。。。。。

  大牛:于是 我们可以这样写,用对象进行包装

//封装检测对象
var check_obj = {
check_phone:function(){
//逻辑操作
},
check_age:function(){
//逻辑操作
},
check_sex:function(){
//逻辑操作
}
}

  大牛:当然我们还可以这样写

function check_obj(){
this.check_age = function(){ };
this.check_phone = function(){ };
this.check_sex = function(){ }
}

  大牛:这样是不是看上去有点高大上了呢,是不是就是类的写法了呢,这样在其他同事调用的时候只需要New一下就可以拥有属于自己的方法了,但是有时候这样做是会做成不必要的资源消耗的,于是我们可以进行如下修改

 

var check_obj = function(){};
check_obj.proptype = {
check_sex:function(){ },
check_age:function(){ },
check_phone:function(){ }
}
//调用
var a = new check_obj();
a.check_phone();
a.check_sex();
a.check_age();

  大神:但是这样的调用方式会让我们把a书写多次,不过这个是可以避免的,看修改后的代码方案:

var check_obj = function(){};
check_obj.proptype = {
check_sex:function(){ return this;
},
check_age:function(){ return this;
},
check_phone:function(){ return this;
}
}
//调用
//var a = new check_obj();
//a.check_phone();
//a.check_sex();
//a.check_age(); //调用新方案
var a = new check_obj();
a.check_age().check_sex().check_phone();

  大神:这样是不是就简单多啦 实现了链式调用,同时我们还可以利用proptype向JavaScript原生对象上面添加共有方法类似于Function.proptype,addMethod = function(){},这样在创建函数的时候都会拥有此方法,不过这种方式要慎用,因为JavaScript中大多都是函数实现的,这样会出现太多多于的代码甚至拖垮性能,所以你可以换种方式去实现:例如:Function.proptype = function(fucName,fn){fucName = fn},这样就可以实现选择性的添加了,哈哈是不是很有趣,很有魔力。

  童鞋:瞬间惊呆了  原来js还可以这样玩,哈哈 受教了

  goodbye everyone,今天的娱乐节目就到这里啦,下次我们再见喽,下次将带来JavaScript的设计模式,初级阶段,bye了各位!

  

JavaScript函数的声明与调用方式的更多相关文章

  1. javascript函数的声明和调用

    × 目录 [1]函数的声明方式 [2]函数的调用方式 [3]两种声明方式的区别 函数:将完成某一特定功能的代码集合起来,可以重复使用的代码块. ---------------------------- ...

  2. javascript 函数的4种调用方式与 this(上下文)的指向

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! javascript中作用域链和this(上下文)的指向是很容易混淆的,简单的说就是: 作用域链取决于函数 ...

  3. javascript函数的4种调用方式

    在javascript中一共有4种函数调用模式,分别是:方法调用模式.函数调用模式.构造函数调用模式和apply(call)调用模式,这4种模式的主要差异在于如何初始化关键参数this. 方法调用模式 ...

  4. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  5. JavaScript 函数 (一 JavaScript 函数的声明与使用)

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. JavaScript 函数的声明与使用 实例 <!DOCTYPE html> <html> <head> ...

  6. JavaScript函数的4种调用方法详解

    在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...

  7. javascript this 代表的上下文,JavaScript 函数的四种调用形式

    JavaScript 是一种脚本语言,支持函数式编程.闭包.基于原型的继承等高级功能.其中JavaScript 中的 this 关键字,就是一个比较容易混乱的概念,在不同的场景下,this会化身不同的 ...

  8. 第十篇----------javascript函数的三种定义方式及区别

    javascript定义函数有3种方式: //3种函数定义方式,前两种常用 /** * 1,function 语句式 * 形式:句子 * 名称:有名 * 性质:静态 * 解析时机:优先解析 * 作用域 ...

  9. JavaScript函数定义 ,参数调用

    一.JavaScript函数函数: 函数就是一种封装,由事件驱动的或者当它被调用时执行的可重复使用的代码块.定义函数:function 函数名(){函数体;}数不会自动执行,需要被调用才可以执行函数名 ...

随机推荐

  1. bootstrap table 以及xEdittable的应用

    以前一直没有用过  bootstrap  表格框架,因为项目css框架用的是bootstrap,为考虑到统一性的原因,所以选用了这个框架 步骤: 第一步:引用 <link href=" ...

  2. 修改Windows远程桌面端口

    要修改注册表中的两处 PortNumber 1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdp ...

  3. linux信息查看手记

    系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...

  4. 项目管理系列--好用的代码评审(Code Review)工具

    1. Gerrit Gerrit is a web based code review system, facilitating online code reviews for projects us ...

  5. Splunk和ELK深度对比

    转自:http://blog.51cto.com/splunkchina/1948105 日志处理两大生态Splunk和ELK深度对比 heijunmasd 0人评论 5312人阅读 2017-07- ...

  6. C#根据用户输入字符串,输出大写字母有几个,小写字母有几个

    static void Main(string[] args) { // 根据用户输入字符串,输出大写字母有几个,小写字母有几个. Console.WriteLine("请输入一行英文代码& ...

  7. Lucene学习之四:Lucene的索引文件格式(2)

    本文转载自:http://www.cnblogs.com/forfuture1978/archive/2009/12/14/1623599.html  略有删减和补充 四.具体格式 上面曾经交代过,L ...

  8. Asp.net MVC5系列——第一个项目

    转自http://www.cnblogs.com/wolf-sun/p/3888160.html 概述 在这一部分我们添加一个新的控制器HelloWorldController类,以便使用视图来向客户 ...

  9. PHP获取当前时间戳

    PHP提供了专门的获取当前时间戳的函数,那就是time()函数.   time()函数获取当前的UNIX时间戳,返回值为从时间戳纪元(格林威治时间1970年1月1日 00:00:00)到当前的秒数.  ...

  10. jquery弹窗居中-类似alert()

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...