javaScript Function 函数的相关属性和方法

【一】Function 函数的相关属性

          1.length  返回函数定义的参数个数。

        function funcTest(x, y, z) {
            console.log(arguments);
            return x + y + z;

        }
        console.log(funcTest.length); //输出3
           2.constructor  返回创建该对象的构造函数。

        var objFunc = new funcTest(1, 2, 3);
        console.log(funcTest.constructor);
           3 .caller  返回调用当前函数的函数。

        function A() {
            return A.caller;
        }

        function B() {
            return A();
        }

        console.log(B()); //返回B函数
        console.log(A()); //返回 undefined ,因为此时没有外层函数调用 A 函数

            4. arguments

               函数执行时内置的arguments对象,该对象返回该函数的所有参数,是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数的值,并拥有数组长度属性length。

       function argumentsTest() {
            console.log(arguments[2]); //输出 a
            return arguments;
       }
       console.log(argumentsTest(1, 2, 'a', 'v')); //输出 [1,2,"a","v"]
          5.callee

            callee 属性是 arguments 对象的一个成员,该属性仅当相关函数正在执行时才可用,返回当前被调用函数的函数对象.

            以下是利用callee 实现匿名函数的递归调用的例子。

        (
            function(count) {
                if (count <= 3) {
                    console.log(count);
                    arguments.callee(++count);
                }
            }
        )(0);//依次输出0,1,2,3

【二】Function 函数的相关方法

          1.toString()  返回定义该Function对象的字符串。

      function f1(a,b,c){
            return a+b+c;
      }

      console.log(f1.toString());
           2.valueOf()  返回Function对象本身。           
       console.log(f1.valueOf());

           3. call 和 apply 

              调用一个对象的方法,用另一个对象替换当前对象。

              语法 call(thisObj,arg1,arg2,arg3);
              语法 apply(thisObj,[arg1,arg2,arg3])
              它允许将函数的 this 对象从初始上下文变为由 thisObj 指定的新对象。 
              如果没有提供 thisObj 参数,则 global 对象被用作 thisObj。
              call与apply方法唯一不同的地方是,apply的第二个参数类型必须是Array,而call方法是将所有的参数列举出来,用逗号分隔。

       var obg = {
            name:'jun',
            say:function(somebody,age){
                return 'Hello '+somebody+' this is '+this.name+age;
            }
        }
       console.log(obg.say('bobo',10));//输出 Hello bobo this is jun10

       var obg1 = {
            name:'obg1',
        };
       console.log(obg.say.call(obg1,'js',100)); // Hello js this is obg1100
       console.log(obg.say.apply(obg1,['js',100])); // Hello js this is obg1100




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值