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 相关文章推荐
javascript 日期时间函数(经典+完善+实用)
May 27 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
使表格的标题列可左右拉伸jquery插件封装
Nov 24 Javascript
JavaScript编程中容易出BUG的几点小知识
Jan 31 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
Aug 13 Javascript
移动手机APP手指滑动切换图片特效附源码下载
Nov 30 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
Feb 25 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
微信小程序常用的3种提示弹窗实现详解
Sep 19 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
js简单倒计时实现代码
2016/04/30 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python生成圆形图片的方法
2020/03/25 Python
python进程和线程用法知识点总结
2019/05/28 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
logging level级别介绍
2020/02/21 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
行政专员岗位职责
2014/01/02 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
超市创业计划书
2014/09/15 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
驻村工作简报
2015/07/20 职场文书
大学入学感言
2015/08/01 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫