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 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
Javascript UrlDecode函数代码
Jan 09 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
May 12 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
Feb 16 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 Javascript
JQuery点击行tr实现checkBox选中的简单实例
May 26 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
Oct 27 Javascript
简单实现js选项卡切换效果
Feb 09 Javascript
vue.js简单配置axios的方法详解
Dec 13 Javascript
JS实现时间校验的代码
May 25 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
基于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 表单提交给自己
2008/07/24 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
django中的ajax组件教程详解
2018/10/18 PHP
php array_map()函数实例用法
2021/03/03 PHP
firefox插件Firebug的使用教程
2010/01/02 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
多个$(document).ready()的执行顺序实例分析
2014/07/26 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
英国女性运动服品牌:Sweaty Betty
2018/11/08 全球购物
应急处置方案
2014/06/16 职场文书
教师节活动总结
2014/08/29 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
nginx 添加http_stub_status_module模块
2022/05/25 Servers
Hive HQL支持2种查询语句风格
2022/06/25 数据库