JavaScript 高级篇之函数 (四)


Posted in Javascript onApril 07, 2012

1、函数的创建

由于前面已经用了很多的函数,我就不在这里多分享了。

2、嵌套函数

function china() 
{ 
function people()//嵌套函数,只有china用它 
{ 
document.write("我的心愿是当杜甫,最近网上他的漫画,他活的好潇洒"); 
} 
people(); 
}

3、函数的直接量

Javascript允许函数用直接量来定义,说白了就是一个表达式,(匿名函数)。细节:匿名函数以后会用,要明白!

function china(people) //函数声明 
{ 
return peole; 
} 
var fun = function(people){return people;};//通过表达式声明。效果等同

4、函数的参数(这里大家要注意)

当你调用一个函数的参数少于声明的参数个数是,其它的参数就是一个undefined的值。

//打印函数 
function displayArray(arr) 
{ 
if(!arr)return; 
for(var num =0;num<arr.length;num++) 
{ 
document.write("Num is "+ arr[num]+ "\t"); 
} 
document.write(" "+"<br />"); 
} 
var array = [2,32,14,57,6]; 
function borrowArray(from,/*optional*/to) 
{ 
if(!to) to = []; //to = to||[] 效果是等同的 
for(var element in from) //使用枚举遍历数组 
to.push(from[element]);//将元素添加到数组 
return to;//返回 
} 
var returnnumber = borrowArray(array);//执行 
displayArray(returnnumber);//打印 
//输出:Num is 2 Num is 32 Num is 14 Num is 57 Num is 6

5、可变的参数(Arguments 对象)
第一次看到这里我也晕了,怎么参数还变的呢,多白了,这个argument对象就是函数参数的管理者,比如你有一个函数,定义了3个参数,那argument就有一个和你定义的参数,一样的数据集。
要注意:arguments标识符在函数体内才有效的。你也可以就把它当成是函数的属性吧!
function checkArgument(x,y,z) 
{ 
if(arguments.length != 3) throw new Error("参数不匹配"); //检查参数是否合法,挺好用吧! 
return x+y+z; 
}

下面的例子是一个比较数字大小的例子,参数是可以变的。
function compareMaxNumber() 
{ 
var temp = Number.NEGATIVE_INFINITY;//表示javascript最小的复数 
for(var arg=0;arg<arguments.length;arg++) 
{ 
if(arguments[arg]>temp) temp = arguments[arg]; 
} 
return temp; //返回参数中最大的数字 
} 
document.write(compareMaxNumber(2,34,5,23,766,1000)+"<br />");//这里的参数可以有很多,输出1000

6、将对象属性作为参数
function displayArray(arr) //打印函数 
{ 
if(!arr)return; 
for(var num =0;num<arr.length;num++) 
{ 
document.write("Num is "+ arr[num]+ "\t"); 
} 
document.write(" "+"<br />"); 
} 
// 
function copyArray(from,from_start,to,to_start,length)//复制数组 
{ 
for(var i = from_start; i <length;i++) 
{ 
to.push(from[i]);//填充 
} 
return to; 
} 
//getArray 接受对象 
function getArray(objarray) 
{ 
//再次封装,调用copyArray 
return copyArray(objarray.from,objarray.from_start ||0,objarray.to|| [],objarray.to_start ||0,objarray.length);//这里用了一点技巧。 
} 
var arr1 = [1,2,3,4,5]; 
displayArray(getArray({from:arr1,length:4}));

6、作为数据的函数
function add(x,y){return x + y;} 
function multply(x,y){return x*y;} 
function cut(x,y){return x -y ;} 
operator(operator1,operator2,operator3)//接收3个参数,可以把函数作为参数使用。 
{ 
return operator1(operator2,operator3);//执行的是add(); 
} 
document.write(operator(add,operator(multply,2,4),operator(cut,12,2)));//输出18了

7、作为方法的函数

这里说的方法不过就是把函数存储在对象的属性里面,然后通过属性来调用,函数可以赋给任何变量。

var obj = {}; 
function display() //(something) 带参数 
{ 
return "Love";//something; 
} 
obj.method = display;//使用对象的直接量赋值。 
obj.method();//调用。obj.method("Love");

其实javascript也引用了this关键字。大家要记住其实调用方法的对象就是this的值。Object.method(); 这里Object就是对象,自然也就this的值了。
var privatename = 
{name:"Frank", 
age:21, 
sex:'男', 
display:function() 
{document.write("my name is:"+this.name+"\t age :"+this.age)}}; 
privatename.display(); //输出 name is:Frank age :21

8、构造函数

构造函数是初始化一个对象的属性,并专门和new运算符一起使用的构造函数,new运算符创建一个对象,然后调用构造函数,把新创建的对象当this的值来传递,赋值。(要能理解)

function createProperty(name,version)//构造函数 
{ 
this.name = name; 
this.version = version; 
} 
var tools = new createProperty("Multply",1.0);初始化,工具的名称,版本

9、定义函数的属性

当你需要使用一个全局不变值时,使用Function对象的属性将会很方便(以后创建命名空间,类的属性,其实都是寄托在这个上面)

createNamespace.name = "360buy.define"; 
createNamespace.version = 1.2; 
function createNamespace() 
{ 
document.write("名称空间:"+createNamespace.name +"版本:" + createNamespace.version); 
} 
createNamespace();//输出:名称空间:360buy.define版本:1.2

10、方法apply()和call()

使用这两个方法可以像调用其它对象的方法一样调用函数,两个方法第一参数都是要调用的对象,后面的参数是要调用的函数参数。

function applyCallOperator(args,args2) 
{ 
document.write(args+"<br />"); 
} 
var objpeople = {}; 
applyCallOperator.apply(objpeople.Frank,[3,4]);//等同 applyCallOperator.call(objpeople.Frank,3,4) 前面就多[] 
objpeople.Frank();

小结:这篇就像大家分享到这来吧,下一篇我们一起实现javascript类。
Javascript 相关文章推荐
如何取得中文输入的真实长度?
Jun 24 Javascript
JS类中定义原型方法的两种实现的区别
Mar 08 Javascript
在线编辑器的实现原理(兼容IE和FireFox)
Mar 09 Javascript
javascript权威指南 学习笔记之javascript数据类型
Sep 24 Javascript
jquery插件validate验证的小例子
May 08 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
Seajs的学习笔记
Mar 04 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
vue 动态组件用法示例小结
Mar 06 Javascript
js中Map和Set的用法及区别实例详解
Feb 15 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 #Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 #Javascript
为原生js Array增加each方法
Apr 07 #Javascript
jquery 操作DOM案例代码分享
Apr 05 #Javascript
jquery 操作DOM的基本用法分享
Apr 05 #Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 #Javascript
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 #Javascript
You might like
php按单词截取字符串的方法
2015/04/07 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
javascript 操作cookies及正确使用cookies的属性
2009/10/15 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
js判断url是否有效的两种方法
2014/03/04 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
优秀教师的感人事迹
2014/02/04 职场文书
销售目标责任书
2014/07/23 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
2014年行政部工作总结
2014/11/19 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS