js函数调用

函数在声明后一般不会直接执行,需要进行调用才能运行

调用方法:

new Object();
函数名(实参列表);
function jc(n){
   if(n == 1){
      return 1;
   } else {
      return n*arguments.callee(n-1);  //arguments.callee:用来指向拥有这个arguments对象的函数
   }                                     此处也就是函数jc(n)
}
var result = jc(10);  //方法一   函数名(实参列表)
 
console.log(result);
  • 函数名.call(执行环境对象,实参列表);
function foo(a,b,c){
    console.log(this,a,b,c);
}
 
foo(1,2,3);
foo.call({msg:'hello'},1,2,3)  //方法二   函数名.call(执行环境对象,实参列表);

此处的执行环境对象就是console.log(this,a,b,c)中this所指的(因为this指向的是函数赖以执行的环境对象,此处this指向global)

  • 函数名.apply(执行环境对象,实参列表数组);
function foo(a,b,c){
    console.log(this,a,b,c);
}
 
foo(1,2,3);
 
foo.apply({msg:'hello'},[1,2,3])  //方法三   函数名.apply(执行环境对象,实参列表数组);

函数的内部属性 只有在函数的内部才能访问的属性

  • arguments

    是类数组对象,包含着传入函数中参数,arguments对象还有一个callee的属性,用来指向拥有这个arguments对象的函数

function add(a,b){
    console.log(arguments);          //所有的实参都在这里
    console.log(arguments.length);   //数组长度
    console.log(arguments.callee);   //用来指向拥有这个arguments对象的函数
    var total = a+b;
    return total;
}
 
var result = add(1,2,3,4);
console.log(result);

输出结果:
{ ‘0’ : 1, ‘1’ : 2, ‘2’ : 3, ‘3’ : 4 } ;4 {Function : add} //arguments.callee所指向的函数,add;3

  • this

      指向的是函数赖以执行的环境对象
    
           sayHello();           this  指向  global/window
           obj.sayHello();     this  指向  obj
           a.sayHello();        this  指向  a
    
           如何判断this指向谁:根据()前面的内容
    

demo:

var sayHello = function(){
    console.log('hello',this);
}
 
var gender = 'male';
var obj ={
    name:'xpf',
    age:22,
    gender:gender,
    sayHello:sayHello
}
 
 
sayHello();      //this指向global
console.log("=================");  //分隔符
obj.sayHello();  //this指向obj

可以看出:

sayHello();   this指向的是global(====上面一大串的东西)

obj.sayHello();  this指向的是obj
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值