JavaScript 高级篇之函数 (四)

 更新时间:2012年04月07日 02:09:53   作者:  
本节我将分享我对函数,嵌套函数,作为数据的函数,作为对象的函数等
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类。

相关文章

  • js原型继承的两种方法对比介绍

    js原型继承的两种方法对比介绍

    这篇文章主要介绍了js原型继承的两种方法对比介绍,需要的朋友可以参考下
    2014-03-03
  • form表单序列化详解(推荐)

    form表单序列化详解(推荐)

    这篇文章主要介绍了form表单序列化操作,通过将表单中的键值序列化为可提交的字符串,并附上代码实例详细讲解了运行之后的结果,需要的朋友可以参考下
    2017-08-08
  • 全选复选框JavaScript编写小结(附代码)

    全选复选框JavaScript编写小结(附代码)

    这篇文章主要介绍了全选”复选框JavaScript编写,分别附上html和js代码以供大家更深刻了解,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。
    2017-08-08
  • javascript prototype原型详解(比较基础)

    javascript prototype原型详解(比较基础)

    prototype原型是javascript中特别重要的概念,属于必须要掌握,如果没有良好的掌握的话,进一步用好或者学好js基本是不可能的实现的事情,并且此概念稍有难度,可能对于初次接触的朋友来说有点困难,下面就通过代码实例简单介绍一下prototype原型的用法
    2016-12-12
  • Javascript学习笔记之 函数篇(三) : 闭包和引用

    Javascript学习笔记之 函数篇(三) : 闭包和引用

    本系列好久没更新了,今天重新拿过来,继续前面未完成的事项,本文我们就来谈谈Javascript 中一个最重要的特性--闭包的使用引用。
    2014-11-11
  • Javascript获取窗口(容器)的大小及位置参数列举及简要说明

    Javascript获取窗口(容器)的大小及位置参数列举及简要说明

    Javascript获取窗口(容器)的大小及位置一系列的东西比较多,容易混淆,在这里列举及简要说明下,需要的朋友可以参考下
    2012-12-12
  • javascript基本类型详解

    javascript基本类型详解

    本文介绍了javascript中的5个原始值(数字,字符,布尔,null,undefined),6个typeo能判断(数字,字符,布尔,object,function,undefined)以及9个原生的内置构造函数,是篇非常不错的文章,这里推荐给大家。
    2014-11-11
  • ES6基础语法之对象介绍

    ES6基础语法之对象介绍

    这篇文章介绍了ES6中对象的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 详解JavaScript中的自定义事件编写

    详解JavaScript中的自定义事件编写

    这篇文章主要介绍了JavaScript中的自定义事件编写,自定义事件是在浏览器中编写Web页面操作功能的基本方式,需要的朋友可以参考下
    2016-05-05
  • JavaScript中的原型prototype属性使用详解

    JavaScript中的原型prototype属性使用详解

    这篇文章主要介绍了JavaScript中的原型prototype属性使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06

最新评论