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登陆判断简单实现代码
Apr 21 Javascript
jQuery中insertBefore()方法用法实例
Jan 08 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
AngularJS+Node.js实现在线聊天室
Aug 28 Javascript
Angular.js去除页面中显示的空行方法示例
Mar 30 Javascript
基于vue实现swipe分页组件实例
May 25 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
js replace替换字符串同时替换多个方法
Nov 27 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
JavaScript实现网页留言板功能
Nov 23 Javascript
VUE项目实现主题切换的多种方法
Nov 26 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 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php防盗链的常用方法小结
2010/07/02 PHP
php 不使用js实现页面跳转
2014/02/11 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
jq给页面添加覆盖层遮罩的实例
2017/02/16 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
python实现批量改文件名称的方法
2015/05/25 Python
python中字符串前面加r的作用
2015/06/04 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
python放大图片和画方格实现算法
2018/03/30 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
企业人事任命书
2014/06/05 职场文书
医院节能减排方案
2014/06/13 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
单位授权委托书范本
2014/09/26 职场文书
安全守法证明
2015/06/23 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
golang在GRPC中设置client的超时时间
2021/04/27 Golang