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

来源:互联网 发布:崩坏三矩阵buff 编辑:程序博客网 时间:2024/05/20 12:52

【一】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




















0 0
原创粉丝点击