首页 > 其他 > 详细

函数对象 函数

时间:2016-01-28 10:36:21      阅读:160      评论:0      收藏:0      [点我收藏+]
把函数看作一个对象,而函数名看作指针,指向该函数,因此有可能多个函数名指向同一个函数
如下
function sum(num1, num2){
    return num1 + num2;
}
alert(sum(10,10)); //20
var anotherSum = sum; alert(anotherSum(10,10)); //20
sum = null; alert(anotherSum(10,10)); //20
 
这也解释了为什么javascript函数不能重载
 
通过function haha()来声明的函数,会在进入运行上下文的时候调用function declaration hoisting,在所有代码执行之前编译,因此即使把声明放在最后面也不会出现unexpected identifier异常,而通过var haha=function来定义的,就必须把声明放在使用之前
 
arguments.callee指向拥有argument的函数
 
function1.caller指向调用者,指向当前函数调用者argument.callee.caller
 
argument.caller返回undefined,区分function1.caller和安全考虑
 
函数也可以理解为运行在特定上下文的对象,用call和apply能够指定运行上下文
 
函数的参数通过复制值来运行,而不是指针引用
 
函数被调用的时候会获得两个特别的变量,this和arguments,函数里面的函数无法直接读取外部函数的this和arguments,除非把外部的缓存起来var that = this;
 
每个函数都会自动收到两个赠送的参数:this 和 arguments,但是函数内部的函数是无法直接获取到外部函数这两个变量的,需要缓存一下

函数对象 函数

原文:http://www.cnblogs.com/chuangweili/p/5165252.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!