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 相关文章推荐
jquery 入门教程 [翻译] 推荐
Aug 17 Javascript
用jquery仿做发微博功能示例
Apr 18 Javascript
angular.foreach 循环方法使用指南
Jan 06 Javascript
js实现当前输入框高亮显示的方法
Aug 19 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
js判断所有表单项不为空则提交表单的实现方法
Sep 09 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
bootstrap modal弹出框的垂直居中
Dec 14 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
Jan 18 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
angular2 NgModel模块的具体使用方法
Apr 10 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
再论Javascript的类继承
2011/03/05 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
vue 组件简介
2020/07/31 Javascript
js制作提示框插件
2020/12/24 Javascript
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Django 路由控制的实现代码
2018/11/08 Python
python 类之间的参数传递方式
2019/12/20 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
校长寄语大全
2014/04/09 职场文书
文明工地标语
2014/06/16 职场文书
工会工作先进事迹
2014/08/18 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
学校端午节活动总结
2015/02/11 职场文书
Python中常见的导入方式总结
2021/05/06 Python
解析Java异步之call future
2021/06/14 Java/Android
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫