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-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
javascript 动态参数判空操作
Dec 22 Javascript
5款Javascript颜色选择器
Oct 25 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
Feb 27 Javascript
JavaScript获取浏览器信息的方法
Nov 20 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
p5.js入门教程和基本形状绘制
Mar 15 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
Aug 19 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
JavaScript常用内置对象用法分析
Jul 09 Javascript
vue项目中引入Sass实例方法
Aug 27 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
PHP出错界面
2006/10/09 PHP
100多行PHP代码实现socks5代理服务器[2]
2016/05/05 PHP
简单谈谈javascript Date类型
2015/09/06 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
Vuex 入门教程
2018/01/10 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python读写unicode文件的方法
2015/07/10 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
大学生职业生涯规划书模版
2013/12/30 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
2014年个人年终总结
2015/03/09 职场文书
停发工资证明范本
2015/06/12 职场文书
歌咏比赛口号大全
2015/12/25 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
配置Kubernetes外网访问集群
2022/03/31 Servers