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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
Jun 06 Javascript
js控制网页前进和后退的方法
Jun 08 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 Javascript
JS实现图片放大镜插件详解
Nov 06 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
js canvas实现5张图片合成一张图片
Jul 15 Javascript
layui使用数据表格实现购物车功能
Jul 26 Javascript
JS如何生成动态列表
Sep 22 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
PHP7变量处理机制修改
2021/03/09 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
DOM 高级编程
2015/05/06 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
[42:32]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第二局
2016/02/27 DOTA
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
Python列表list排列组合操作示例
2018/12/18 Python
python路径的写法及目录的获取方式
2019/12/26 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
中专生职业生涯规划书范文
2014/01/10 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL