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 自动填写表单的实现方法
Apr 09 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
Jul 04 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
Bootstrap每天必学之前端开发框架
Nov 19 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
Dec 26 Javascript
js完整倒计时代码分享
Sep 18 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
Jan 03 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
Aug 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
php foreach 参数强制类型转换的问题
2010/12/10 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
php制作简单模版引擎
2016/04/07 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
javaScript基础详解
2017/01/19 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
angularjs实现天气预报功能
2020/06/16 Javascript
浅谈webpack下的AOP式无侵入注入
2017/11/12 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
微信小程序位置授权处理方法
2019/06/13 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python使用正则筛选信用卡
2019/01/27 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
django中的图片验证码功能
2019/09/18 Python
python3多线程知识点总结
2019/09/26 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
python3处理word文档实例分析
2020/12/01 Python
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
大学考试作弊检讨书
2014/01/30 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
2019个人半年工作总结
2019/06/21 职场文书