JavaScript函数内部属性和函数方法实例详解


Posted in Javascript onMarch 17, 2016

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。

函数是对象,有自己的属性和方法 。首先通过console下输出的函数属性方法来直观的看一下:

JavaScript函数内部属性和函数方法实例详解

函数内部属性只要包括两个特殊的对象:arguments和this。

函数属性包括:length和prototype

函数方法(非继承)包括:apply()和call()

继承而来的函数方法:bind()、toString()、toLocaleString()、valueOf()

其他的目前不熟,后面再补充

1. 函数内部属性

在函数内部,有两个特殊的对象,arguments和this。

arguments属性

arguments是一个类数组对象,包含传入函数的所有参数,arguments的主要用途是保存函数参数,但这个对象有一个callee属性,该属性是一个指针,指向拥有这个arguments对象的函数,下面是非常经典的阶乘函数。

function factorial (num){
if(num <= 1){
return 1;
} else{
return num * factorial(num-1); 
}
}

定义阶乘函数一般都会用到递归算法,如上面代码所示,在有函数名字,并且函数名字以后也不会改变的情况下,这种定义没问题。但是这个函数的执行与函数名factorial紧紧耦合在了一起,为了消除这种紧密耦合现象(函数名字改变等情况),可以使用arguments.callee。

function factorial(num){
if(num<=1){
return 1;
} else{
return num * arguments.callee(num-1);
}
}

重写后的factorial()函数的函数体内,没有再引用函数名factorial。这样即使改变函数名字,都可以保证正常完成递归调用。例如:

var trueFactorial = factorial; //改变原函数体的指针(保存位置)
factorial = function (){ //factorial 指向返回0的新函数
return 0;
}
alert(trueFactorial(5)); //120
alert(factorial(5)); //0

如果,不使用arguments.callee,那么trueFactorial(5)同样返回0;

this属性

2. 函数的方法

每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的域中调用函数(看到这里木有看懂);其真正强大之处在于能够扩充函数赖以运行的作用域

关于JavaScript函数内部属性和函数方法的相关知识,小编就给大家介绍这么多,希望对大家有所帮助!

Javascript 相关文章推荐
Prototype1.6 JS 官方下载地址
Nov 30 Javascript
基于jQuery图片平滑连续滚动插件
Apr 27 Javascript
JavaScript的parseInt 取整使用
May 09 Javascript
js Dialog 实践分享
Oct 22 Javascript
js关闭模态窗口刷新父页面或跳转页面
Dec 13 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
浅谈angularjs依赖服务注入写法的注意点
Apr 24 Javascript
详解Angular路由 ng-route和ui-router的区别
May 22 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
微信小程序实现天气预报功能
Jul 18 Javascript
基于jquery实现简单的分页控件
Mar 17 #Javascript
jQuery实现图片局部放大镜效果
Mar 17 #Javascript
jQuery实现放大镜效果实例代码
Mar 17 #Javascript
node.js使用cluster实现多进程
Mar 17 #Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
Mar 17 #Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 #Javascript
基于socket.io+express实现多房间聊天
Mar 17 #Javascript
You might like
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
PHP的静态方法与普通方法用法实例分析
2019/09/26 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
jquery+css+ul模拟列表菜单具体实现思路
2013/04/15 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
简单了解python关系(比较)运算符
2019/07/08 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
Python continue语句实例用法
2020/02/06 Python
Python单链表原理与实现方法详解
2020/02/22 Python
pandas DataFrame运算的实现
2020/06/14 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
安全生产活动月方案
2014/03/09 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
社会实践单位意见
2015/06/05 职场文书
教导处教学工作总结
2015/08/12 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android