热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript——对象的概念——函数1(函数对象的属性和方法)

一、创建函数函数是一种对象:Function类是对象,可以通过Function实例化一个函数,不过最多的还是利用function来创建函数。方式一:利用Function类来实例化函

一、创建函数

函数是一种对象:Function类 是对象,可以通过 Function 实例化一个函数,不过最多的还是利用 function 来创建函数。

方式一:利用 Function类 来实例化函数:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 var people=new Function("name","sex","if (sex==‘男‘) return name+‘先生: 您好!‘; else return name+‘女士: 您好!‘;");
2 people(‘小强‘,‘男‘) //"小强先生: 您好!"


Function类 实例化函数

语法格式:var function_name = new function(arg1, arg2, ..., argN, function_body)


  • 参数中前 n 个为函数的形参,最后一个为函数的函数体(执行部分);

方式二:利用 function 来创建函数,语法如下:

var a= function (参数1,参数2……){}

或  function a(参数1,参数2……){}

例:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function people(name,sex)
2 {
3 if (sex==‘男‘)
4 return name+‘先生: 您好!‘;
5 else
6 return name+‘女士: 您好!‘;
7 }


创建方法

注意以下问题:


  • 当设定参数而忘记调用参数时,Javascript引擎将自动传递一个 undefined 的参数;

  • 当传递的参数超出设定参数个数时,多余的部分将自动忽略;

  • Javascript通过一个 arguments 对象自动管理函数接受的参数,该对象类似于一个数组。

由以上两种方式可以看出,创建的函数最终是一样的,务必记住一点函数是一种对象,其是引用类型。

二、Javascript中的变量

Javascript中的变量分为局部变量和全局变量。

1、局部变量: 在函数内部以 var 声明的变量,只能在函数内访问,函数运行完毕会删除局部变量;

2、全局变量:


  • 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。

  • 在函数内部未使用var 声明的变量也是全局变量,如 carname="Volvo";但是这种全局变量只有在执行所在函数后才能在全局范围内访问。

三、函数相关的属性:

1、arguments:访问函数的输入参数,由脚本解释器自动创建,具有length属性,类似于数组,可以用数组的方法访问每个参数。

例1:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function people(name,sex)
2 {
3
4 if (sex==‘男‘)
5 return name+‘先生: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
6 else
7 return name+‘女士: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
8 };
9 people(‘小强‘,‘男‘); //"小强先生: 您好!一共有 2 个参数"
10 people(‘小丽‘,‘女‘); //"小丽女士: 您好!一共有 2 个参数"


arguments使用例子 1

例2:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function people(name,sex)
2 {
3
4 if (sex==‘男‘)
5 return arguments[0]+‘先生: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
6 else
7 return arguments[0]+‘女士: 您好!一共有 ‘+arguments.length+‘ 个参数‘;
8 };
9 people(‘小强‘,‘男‘); //"小强先生: 您好!一共有 2 个参数"
10 people(‘小丽‘,‘女‘); //"小丽女士: 您好!一共有 2 个参数"


arguments使用例子 2

例3:

bubuko.com,布布扣

结果如图:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function sum(v1,v2)
2 {
3 document.writeln(‘////////////////////////////////////////////////////////////////////////‘);
4 document.writeln(‘
调用参数:
);
5 document.writeln(‘参数有 ‘+arguments.length+‘ 个:
);
6 var s=0;
7 for(var i=0;i)
8 {
9 document.writeln(‘参数 ‘+i+‘:‘+arguments[i]+‘
);
10 }
11 for(var i=0;i)
12 {
13 s=s+arguments[i];
14 }
15 document.writeln(‘参数的和为: ‘+s +‘
);
16 document.writeln(‘////////////////////////////////////////////////////////////////////////‘);
17 };


arguments使用例子 3

由例子可以看出 arguments 对象操作的只是实参,而不是形参,因此我们实际上也可以不必设置形参,当然为规范性还是指定的好。

2、callee:arguments的属性,表正在执行的函数对象。

例如:

 bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function sum(n)
2 {
3 if(n<=0)
4 return 0;
5 else
6 return n+arguments.callee(n-1);
7 }
8 sum(2); //3
9 sum(100); //5050


arguments.callee使用例子

3、calleer:函数对象的属性,表函数对象的父函数对象。function foo1(v1) 

例:

bubuko.com,布布扣

结果:

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function foo1(v1)
2 {foo2(v1,v1*2);}
3 function foo2(v1,v2)
4 {foo3(v1,v2,v2*2);}
5 function foo3(v1,v2,v3)
6 {
7   var foo=arguments.callee;
8   while(foo&&(foo!=window))
9   {
10     document.writeln(‘
调用参数:
);
11     var args=foo.arguments;
12     argn=args.length;
13 document.write(‘参数有 ‘+argn+‘ 个:\n‘);
14     for(var i=0;i)
15     {
16       document.writeln(‘args[‘+i+‘]:‘+args[i]+‘
);
17     }
18     foo=foo.caller;
19   }
20 };
21 document.writeln(‘////////////////////////////////////////////////////////////////////////‘);


arguments.caller应用实例

4、apply 和 call 方法:将函数绑定到其他对象上执行。

apply:参数将以数组的形式传入;

call:参数以逗号隔开,作为一个列表传入。

bubuko.com,布布扣

bubuko.com,布布扣bubuko.com,布布扣

1 function classA()
2 {
3 this.name=‘classA‘;
4 this.methodA=function(msg){return this.name+‘:‘+msg};
5 }
6 function classB()
7 {
8 this.name=‘classB‘;
9 this.methodB=function(msg){return this.name+‘:‘+msg};
10 }
11 var objA=new classA();
12 var objB=new classB();
13 objA.methodA(‘调用methodA‘); //"classA:调用methodA"
14 objA.methodA.apply(objB,[‘调用methodA‘]); //"classB:调用methodA"
15 objB.methodB.call(objA,[‘调用methodB‘]); //"classA:调用methodB"


apply 与 call 的用法

 

5、length :返回形参个数,指的是函数定义时期望的参数个数,与实际调用时的参数(实参)个数无关。

bubuko.com,布布扣

6、valueOf()、 toString() :返回函数的代码

bubuko.com,布布扣

7、this


  • 在构造器函数中表新创建的对象的实例;

  • 对象的方法被调用时,指调用该方法的对象实例;

  • 当函数作为一个方法而不是一个对象的方法时,表示windows对象;

  • 在函数体外,表示windows对象;

 

 

 


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 本文介绍如何在 Xcode 中使用快捷键和菜单命令对多行代码进行缩进,包括右缩进和左缩进的具体操作方法。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 几何画板展示电场线与等势面的交互关系
    几何画板是一款功能强大的物理教学软件,具备丰富的绘图和度量工具。它不仅能够模拟物理实验过程,还能通过定量分析揭示物理现象背后的规律,尤其适用于难以在实际实验中展示的内容。本文将介绍如何使用几何画板演示电场线与等势面之间的关系。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文介绍如何在应用程序中使用文本输入框创建密码输入框,并通过设置掩码来隐藏用户输入的内容。我们将详细解释代码实现,并提供专业的补充说明。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
author-avatar
书友74562696
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有