<script type="text/javascript">
//在函数内部有两个特殊的属性:arguments 和 this。arguments是一个类数组对象,包含传入的所有参数,
//但是这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。
//请看经典的阶乘函数例子:
function Factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * Factorial(num - 1);
}
} function Factorial(num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
}
} //使用第一种方式是没有错的,但是耦合性太高,不太好,函数名改变之后,内部的函数名也要改变
//第二种方式就是低耦合的做法,无论函数名怎么改变都不会影响函数执行。 //this引用的是函数据以执行的环境对象,或者也可以说是this值
window.color = "red";
var o = {color: "blue"};
function sayColor() {
alert(this.color);
} sayColor();//red
o.sayColor = sayColor;
o.sayColor();//blue //caller属性,保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,它的值为Null
function outer() {
innter();
} function innter(){
//alert(innter.caller);//耦合性太高
alert(arguments.callee.caller);
} outer();
</script>

javascript——函数内部属性的更多相关文章

  1. Javascript高级程序设计——函数内部属性与函数属性

    函数内部属性 函数内部有两个特殊的属性arguments和this.其中,arguments是类数组对象,包含传入函数中的所有值,这个arguments还有一个属性:callee,这个属性是一个指针, ...

  2. JavaScript函数内部修改全局变量的问题【一道面试题】

    JavaScript函数内部修改全局变量的问题 今天 10:44梵天莲华 | 浏览 23 次  Javascript编程语言函数 修改标签 代码如下,为什么加了 function a(){};这个函数 ...

  3. javascript知识点总结----函数内部属性

    在函数内部,有两个特殊的对象:argumengs和this 1.函数的参数 ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,也就是说:你定义的函数只接收2个参数, ...

  4. 函数内部属性之arguments和this

    在函数内部,有两个特殊的对象:arguments和this. 1.arguments arguments是一个类数组对象.包含着传入函数中的所有参数.但这个对象还有一个名叫callee的属性,该属性是 ...

  5. JS学习之函数内部属性和方法

    知识点:arguments和this对象.caller属性.apply()和call()方法     arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象 属性:callee 指 ...

  6. arguments 函数内部属性

    1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function ...

  7. 改变javascript函数内部this指针指向的三种方法

    在查了大量的资料后,我总结了下面的三条规则,这三条规则,已经可以解决目前我所遇到的所有问题.规则0:函数本身是一个特殊类型,大多数时候,可以认为是一个变量. function a() { alert( ...

  8. this 函数内部属性

    前言:在javascript中我们会经常碰到this,然后this经常出现在function方法里面,有时候可能因为代码很多,无法判断this指向的是谁,其实很简单,一句话总结:谁点出这个this,这 ...

  9. HTML 学习笔记 JavaScript (函数)

    函数是由事件驱动的或者当他被调用时执行的可重复使用的代码块 实例 <!DOCTYPE html> <html> <head> <script> func ...

随机推荐

  1. 2015第43周三memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  2. java基础(十)面向对象(五)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  3. [转载]jQuery.extend 函数详解

    JQuery的extend扩展方法:      Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解.      一.Jquery的扩展方 ...

  4. poj 1106 Transmitters (枚举+叉积运用)

    题目链接:http://poj.org/problem?id=1106 算法思路:由于圆心和半径都确定,又是180度,这里枚举过一点的直径,求出这个直径的一个在圆上的端点,就可以用叉积的大于,等于,小 ...

  5. zabbix2.2.3 VMware Vsphere exsi监控配置步骤

    zabbix2.2.3 VMware Vsphere exsi监控配置步骤, 1,添加监控主机 2,添加聚集macro;{$PASSWORD} = yoodo.com{$URL} = http://i ...

  6. pecl/mongo is already installed

    sw-engine-cgi PHP MongoDB database drivermongodb database driver,数据库驱动;

  7. [CF 351B]Jeff and Furik[归并排序求逆序数]

    题意: 两人游戏, J先走. 给出一个1~n的排列, J选择一对相邻数[题意!!~囧], 交换. F接着走, 扔一硬币, 若正面朝上, 随机选择一对降序排列的相邻数, 交换. 若反面朝上, 随机选择一 ...

  8. 用js判断一个复选框是否被选中

    <html> <head>        <title>            复选框全选.全不选.反选.必选一个        </title>    ...

  9. C#执行参数为游标 返回一个记录集的Oracle存储过程

    public DataTable SelectPay_Unit() { string returns = ""; DataTable objDataTable = new Data ...

  10. bzoj3065: 带插入区间K小值

    无聊来写了下 一开始发现树高是O(n)的,然后就MLE了,进去看了下发现没有重构! 看了半天发现调用错了函数 然后进去又发现不满足sz = ch[0]->sz + ch[1]->sz + ...