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 相关文章推荐
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
Mar 13 Javascript
coffeescript使用的方式汇总
Aug 05 Javascript
jquery使用ul模拟select实现表单美化的方法
Aug 18 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
JavaScript编程中实现对象封装特性的实例讲解
Jun 24 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
JQuery Ajax WebService传递参数的简单实例
Nov 02 Javascript
Bootstrap fileinput文件上传组件使用详解
Jun 06 Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 Javascript
vant 解决tab切换插件标题样式自定义的问题
Nov 13 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
德生S2000电路分析
2021/03/02 无线电
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
php目录拷贝实现方法
2015/07/10 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
JS和Jquery获取和修改label的值的示例代码
2014/01/15 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
js电话号码验证方法
2015/09/28 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
jQuery实现放大镜效果实例代码
2016/03/17 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
Vue.js系列之vue-router(上)(3)
2017/01/03 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Python 在局部变量域中执行代码
2020/08/07 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
C,C++的几个面试题小集
2013/07/13 面试题
教师实习自我鉴定
2013/12/13 职场文书
写给女朋友的检讨书
2014/01/28 职场文书
个人查摆剖析材料
2014/02/04 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
mysql如何查询连续记录
2022/05/11 MySQL