1.常规写法

 function fnName(){
console.log("常规写法");
}

2.匿名函数,函数保存到变量里

 var myfn = function(){
console.log("匿名函数,函数保存到变量里");
}

3.如果有多个变量,可以用对象收编变量

3.1 用json对象

 var fnobject1={
fn1:function(){
console.log("第一个函数");
},
fn2:function(){
console.log("第二个函数");
},
fn3:function(){
console.log("第三个函数");
}
11 }

3.2 声明一个对象,然后给它添加方法

 var fnobject2 = function(){};
fnobject2.fn1 = function(){
console.log("第一个函数");
}
fnobject2.fn2 = function(){
console.log("第二个函数");
}
fnobject2.fn3 = function(){
console.log("第三个函数");
}

3.3 可以把方法放在一个对象函数里

 var fnobject3 = function(){
return {
fn1:function(){
console.log("第一个函数");
},
fn2:function(){
console.log("第二个函数");
},
fn3:function(){
console.log("第三个函数");
}
}
};

4.可用类来实现,注意类的第二种和第三种写法不能混用,否则一旦混用,如在后面为对象的原型对象赋值新对象时,那么他将会覆盖掉之前对prototype对象赋值的方法

4.1 第一种写法

 var fnobject4 = function(){
this.fn1 = function(){
console.log("第一个函数");
}
this.fn2 = function(){
console.log("第二个函数");
}
this.fn3 = function(){
console.log("第三个函数");
}
};

4.2 第二种写法

 var fnobject5 = function(){};
fnobject5.prototype.fn1 = function(){
console.log("第一个函数");
}
fnobject5.prototype.fn2 = function(){
console.log("第二个函数");
}
fnobject5.prototype.fn3 = function(){
console.log("第三个函数");
}

4.3 第三种写法

 var fnobject6 = function(){};
fnobject6.prototype={
fn1:function(){
console.log("第一个函数");
},
fn2:function(){
console.log("第二个函数");
},
fn3:function(){
console.log("第三个函数");
}
}

4.4 第四种写法

var fnobject7 = function(){};
fnobject7.prototype={
fn1:function(){
console.log("第一个函数");
return this;
},
fn2:function(){
console.log("第二个函数");
return this;
},
fn3:function(){
console.log("第三个函数");
return this;
}
}

5.对Function对象类的扩展(下面三种只能用一种)

5.1 第一种写法(对象)

 Function.prototype.addMethod = function(name,fn){
this[name] = fn;
}
var methods=function(){};//var methods=new Function();
methods.addMethod('fn1',function(){
console.log("第一个函数");
});
methods.addMethod('fn2',function(){
console.log("第二个函数");
});
methods.addMethod('fn3',function(){
console.log("第三个函数");
});

5.2 链式添加(对象)

 Function.prototype.addMethod = function(name,fn){
this[name] = fn;
return this;
}
var methods=function(){};//var methods=new Function();
methods.addMethod('fn1',function(){
console.log("第一个函数");
}).addMethod('fn2',function(){
console.log("第二个函数");
}).addMethod('fn3',function(){
console.log("第三个函数");
});

5.3 链式添加(类)

Function.prototype.addMethod = function(name,fn){
this.prototype[name] = fn;
return this;
}
var Methods=function(){};//var methods=new Function();
methods.addMethod('fn1',function(){
console.log("第一个函数");
}).addMethod('fn2',function(){
console.log("第二个函数");
}).addMethod('fn3',function(){
console.log("第三个函数");
});

javascript函数的几种写法集合的更多相关文章

  1. Javascript函数的几种写法

    最近在看某个插件的源码时,总是看到各种不同风格的js函数的写法.(怪我只是初级水平,看的一头雾水) 于是想找点资料,总结总结,心里不清不楚的总是很别扭! 1.常规写法 // 函数写法 function ...

  2. javascript立即调用的函数表达式N种写法(第二篇)

    原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...

  3. swap函数的四种写法

    swap 函数的四种写法 (1)经典型 --- 嫁衣法 void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } ( ...

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

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

  5. swap()函数的几种写法及优劣

    试用几种方法实现swap函数,比较效率高低. 首先说结果,最快的是赋值交换. 原因分析 gcc开启O2优化后,三个函数的汇编代码一样.是的,除了第一行的文件名,一模一样. 附代码 void swap1 ...

  6. C++ 常用编程--Swap函数有几种写法?

    C++ 常用编程--Swap函数有几种写法? 在说C++模板的方法前,我们先想想C语言里面是怎么做交换的. 举个例子,要将两个int数值交换,是不是想到下面的代码: void swap(int& ...

  7. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

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

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

  9. ASP.NET后台中调用前台Javascript函数的几种方法

    做web开发,用的技术是aspx.net,可是由于比较习惯于ASP现在做起来,觉得非常别扭,原因在于有很多功能其实在前台可以处理的,但是因为用到了很多webcontrol,导致不断postback.如 ...

随机推荐

  1. 利用log4j+mongodb实现分布式系统中日志统一管理

    背景     在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数 ...

  2. 如果你发现mysql的外键约束不管用了

    不知为何我机子上的mysql竟然默认关闭外键约束,导致我试了好多遍都可以插入非法值,以下语句可以开启约束 SET foreign_key_checks = 1; (0则关闭) 备忘

  3. ABP(现代ASP.NET样板开发框架)系列之9、ABP设置管理

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之9.ABP设置管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...

  4. java运行时获得泛型类型

    引言 众所周知,java泛型最重要的特征是泛型擦除,所有泛型在编译时会转换成Object所以在java中运行时无法获得泛型的类型. 但是其实以上的规则是针对方法的内部变量的,如果是其他形式的泛型其实是 ...

  5. C++ 高性能无锁日志系统

    服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障 ...

  6. [原创]关于ORACLE的使用入门

    Oracle===============================数据库:Oracle------>甲骨文(Oracle) 49+%DB2---------->IBM 49+%Sq ...

  7. Install and Configure SharePoint 2013 Workflow

    这篇文章主要briefly introduce the Install and configure SharePoint 2013 Workflow. Microsoft 推出了新的Workflow ...

  8. 10.JAVA之GUI编程弹出对话框Dialog

    在上节基础上添加对话框显示错误信息. 代码如下: /*弹出对话框显示错误信息,对话框一般不单独出现,一般依赖于窗体.*/ /*练习-列出指定目录内容*/ import java.awt.Button; ...

  9. 代码的坏味道(13)——过多的注释(Comments)

    坏味道--过多的注释(Comments) 特征 注释本身并不是坏事.但是常常有这样的情况:一段代码中出现长长的注释,而它之所以存在,是因为代码很糟糕. 问题原因 注释的作者意识到自己的代码不直观或不明 ...

  10. TeamCity : 配置 Build 过程

    Build 过程往往是比较复杂的,因此 TeamCtiy 通过 build 步骤的方式让您可以实现不同的应用场景.您可以在每个 build 步骤中只做一件事情,然后把一系列的 build 步骤组织起来 ...