javascript——函数内部属性
<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——函数内部属性的更多相关文章
- Javascript高级程序设计——函数内部属性与函数属性
函数内部属性 函数内部有两个特殊的属性arguments和this.其中,arguments是类数组对象,包含传入函数中的所有值,这个arguments还有一个属性:callee,这个属性是一个指针, ...
- JavaScript函数内部修改全局变量的问题【一道面试题】
JavaScript函数内部修改全局变量的问题 今天 10:44梵天莲华 | 浏览 23 次 Javascript编程语言函数 修改标签 代码如下,为什么加了 function a(){};这个函数 ...
- javascript知识点总结----函数内部属性
在函数内部,有两个特殊的对象:argumengs和this 1.函数的参数 ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,也就是说:你定义的函数只接收2个参数, ...
- 函数内部属性之arguments和this
在函数内部,有两个特殊的对象:arguments和this. 1.arguments arguments是一个类数组对象.包含着传入函数中的所有参数.但这个对象还有一个名叫callee的属性,该属性是 ...
- JS学习之函数内部属性和方法
知识点:arguments和this对象.caller属性.apply()和call()方法 arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象 属性:callee 指 ...
- arguments 函数内部属性
1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function ...
- 改变javascript函数内部this指针指向的三种方法
在查了大量的资料后,我总结了下面的三条规则,这三条规则,已经可以解决目前我所遇到的所有问题.规则0:函数本身是一个特殊类型,大多数时候,可以认为是一个变量. function a() { alert( ...
- this 函数内部属性
前言:在javascript中我们会经常碰到this,然后this经常出现在function方法里面,有时候可能因为代码很多,无法判断this指向的是谁,其实很简单,一句话总结:谁点出这个this,这 ...
- HTML 学习笔记 JavaScript (函数)
函数是由事件驱动的或者当他被调用时执行的可重复使用的代码块 实例 <!DOCTYPE html> <html> <head> <script> func ...
随机推荐
- 【转】蓝牙物理链路类型:SCO和ACL链路
原文网址:http://blog.chinaunix.net/uid-23193900-id-3272233.html 蓝牙物理链路ACL(Asynchronous Connectionless), ...
- 在PC上使用串口向开发板传送文件
之前一直使用的是NFS,即网络挂载文件系统,不愁文件的传输问题,但是不幸的是 前几天网络出现故障,使这种方式没法使用 变好的驱动程序一直没法下载到开发板里面,蛋疼欲裂啊. 于是乎折磨则么使用串口传输 ...
- ACM1997_汉诺栽塔VII
#include <stdio.h> #include <iostream> #include <queue> #include <stdlib.h> ...
- Java编程-第一个Java程序
Java编程用到的IDE是Eclipse. 关于第一个Java程序实现的简单流程: (1) 下载eclipse (2) File-New-Java Project 命名工程名字:Hello ...
- spring框架DI(IOC)和AOP 原理及方案
http://www.blogjava.net/killme2008/archive/2007/04/20/112160.html http://www.oschina.net/code/snippe ...
- 某外企mono for android试题
Hitcents C#Programming Test This test is designed to evaluate generalC# and Xamarin development skil ...
- system2之:4-LVM逻辑卷管理
LVM有扩容功能,无容错功能 物理卷: [root@localhost ~]# pvscan PV /dev/sda2 VG VolGroup lvm2 [19.51 GiB / 0 ...
- (二)Eclipse 快捷键
编辑 Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如import类.try catch包围等)Ctrl+Shift+F 格式化当前代码Ctrl+Shift+M 添加类的i ...
- win10亮度不能调节的解决方法
如果大家遇到Win10屏幕亮度调不了,该如何解决呢?以下是电脑百事网小编亲测比较有用的几种方法,希望能够帮助大家. 修改注册表解决Win10屏幕亮度无法调节 1.首先使用 Win+R 组合快捷键打开W ...
- dom4j的基本操作
/** * 建立一个XML文档,文档名由输入属性决定 * @param filename 需建立的文件名 * @return 返回操作结果, 0表失败, 1表成功 */ import java.io. ...