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绑定事件不生效的解决方法
Feb 11 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
Extjs 点击复选框在表格中增加相关信息行
Jul 12 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
VsCode新建VueJs项目的详细步骤
Sep 23 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
Nov 30 Javascript
vue 登录滑动验证实现代码
Aug 24 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
Apr 10 Javascript
浅谈Vue组件单元测试究竟测试什么
Feb 05 Javascript
js数组中去除重复值的几种方法
Aug 03 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
微信小程序入门教程
2016/11/18 Javascript
angular十大常见问题
2017/03/07 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
Python中分数的相关使用教程
2015/03/30 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Python selenium抓取微博内容的示例代码
2018/05/17 Python
python使用turtle库绘制时钟
2020/03/25 Python
python爬虫之遍历单个域名
2019/11/20 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
2014全国两会学习心得体会1000字
2014/03/10 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
初任公务员培训心得体会
2016/01/08 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android