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 相关文章推荐
Enter转换为Tab的小例子(兼容IE,Firefox)
Nov 14 Javascript
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
May 16 Javascript
JavaScript提升性能的常用技巧总结【经典】
Jun 20 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
Jul 28 Javascript
Jquery获取当前城市的天气信息
Aug 05 Javascript
JS实现列表的响应式排版(推荐)
Sep 01 Javascript
Angular 中 select指令用法详解
Sep 29 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
three.js 如何制作魔方
Jul 31 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
php中大括号作用介绍
2012/03/22 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
innerHTML 和 getElementsByName 在IE下面的bug 的解决
2010/04/09 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python实现括号匹配的思路详解
2018/08/23 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
python和go语言的区别是什么
2020/07/20 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android