javascript中的函数(Function)
来源:互联网 发布:java编程那些事儿 编辑:程序博客网 时间:2024/03/29 08:06
函数本质
javascript中的函数本质都是Function引用类型的实例,即函数就是一个Function类型的对象
函数定义
1.声明方式:
如:
function func(num){return num+1;}
2.函数表达式方式
var func=function(){ return 'hello';}
3.new方式
var func=new Function("num1","num2","return num1+num2") //最后一个参数就是函数体,前面都是函数参数
函数没有重载
js中函数没有重载,因为函数名就是一个保存函数对象引用的变量
如:
function addSomeNumber(num){ return num + 100;}function addSomeNumber(num) { return num + 200;}实质:var addSomeNumber = function (num){ return num + 100;};addSomeNumber = function (num) { return num + 200;};
函数对象的属性
1.this
指向函数执行时的外部作用域对象
2.arguments
指向保存参数的一个类数组对象,arguments对象有一个属性callee,这个属性执行函数对象,有趣的是构成了一个循环,函数对象的arguments指向参数对象,参数对象的callee属性执行函数对象。
举例:
function factorial(num){ if (num <=1) {return 1;} else {return num * factorial(num-1); //这个求阶乘的函数和函数名严重耦合,如果将函数引用赋值给其他变量将来使用此函数将报错}}var trueFactorial = factorial;factorial = function(){return 0;};alert(trueFactorial(5)); //递归结果不对,factorial执行的函数变成了一个返回0的函数alert(factorial(5)); //结果0function factorial(num){if (num <=1) {return 1;} else {return num * arguments.callee(num-1); //这样是松耦合的,和函数名就没有关系}}
3.caller执行函数执行时的外部函数作用域对象,这个属性强调的是函数外部执行环境必须是一个函数,如果不是那么这个属性值为null
如:function outer(){inner();}function inner(){alert(arguments.callee.caller); //弹窗显示的是outer函数,即caller属性指向outer函数对象}outer();
4.lengthlength属性表示函数形参个数
5.prototype
prototype属性执行函数对象的原型,任何引用类型都有原型,都是通过构造函数中的prototype属性引用的
函数对象中的方法
apply和call方法这两个方法效果一样,只是传递参数的方式不一样,第一个参数函数执行的外部作用域对象,后面参数就是函数参数如:function sum(num1, num2){return num1 + num2;}function callSum1(num1, num2){return sum.apply(this, arguments); // 传入 arguments 对象}function callSum2(num1, num2){return sum.apply(this, [num1, num2]); // 传入数组}alert(callSum1(10,10)); //20alert(callSum2(10,10)); //20//call方法function sum(num1, num2){return num1 + num2;}function callSum(num1, num2){return sum.call(this, num1, num2);}alert(callSum(10,10)); //20//作用域的不同执行效果不一样window.color = "red";var o = { color: "blue" };function sayColor(){alert(this.color);}sayColor(); //redsayColor.call(this); //redsayColor.call(window); //redsayColor.call(o); //blue
0 0
- JavaScript中的Function函数
- javascript中的函数Function
- javascript中的函数Function
- javascript中的函数Function
- Javascript中的function函数
- javascript中的函数(Function)
- JavaScript 中的匿名函数!+ - function
- JavaScript中的Function(函数)对象
- JavaScript中的Function和匿名函数
- JavaScript中的Function(函数)对象
- 理解javascript中的立即执行函数(function(){})()
- 理解javascript中的立即执行函数(function(){})()
- 理解javascript中的立即执行函数(function(){})()
- javascript中的立即执行函数(function(){…})()
- JavaScript中的立即执行函数(function(){...})()
- javascript中的Function与function
- javascript中的function 函数名(){} 和 函数名:function(){}有什么不同?
- javascript的函数function
- 如何在CentOS 6安装Linux,Apache,MySQL,PHP(LAMP)
- VS2015输入参数执行操作步骤
- unit 10
- oracle 创建分区表,增(追)加分区
- 九度 oj 题目1076:N的阶乘
- javascript中的函数(Function)
- 安卓手势识别
- php + 七牛上传遇到 nginx 413 nginx 413 Request Entity Too Large
- POJ3278:Catch That Cow(BFS)
- [LeetCode]442 Find All Duplicates in an Array
- Java 中方法的重载
- 2017-01-10 笔记 P2P网络 集中式网络与分散式网络
- unit 11
- Redis Sentinel(哨兵):集群解决方案