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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
Oct 22 Javascript
层序遍历在ExtJs的TreePanel中的应用
Oct 16 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
js分页工具实例
Jan 28 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
浅谈JavaScript异步编程
Jan 20 Javascript
原生JS+Canvas实现五子棋游戏
May 28 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
May 07 Javascript
Vue父组件向子组件传值以及data和props的区别详解
Mar 02 Javascript
解决pycharm双击但是无法打开的情况
Oct 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 getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
2017/06/06 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
wxPython学习之主框架实例
2014/09/28 Python
python使用knn实现特征向量分类
2018/12/26 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python如何写出表白程序
2020/06/01 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
罗兰·穆雷官网:Roland Mouret
2018/09/28 全球购物
挂靠协议书
2015/01/27 职场文书
道歉短信大全
2015/05/12 职场文书
小学大队长竞选稿
2015/11/20 职场文书
python编写五子棋游戏
2021/05/25 Python
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers