zoukankan      html  css  js  c++  java
  • javascript学习笔记07(this,arguments,call,apply)

    在函数对象中有一个属性叫做arguments,通过这个属性可以获取相应的参数值,这个属性是一个数组,其实就是传递进来的参数

    this:

    以上可以归纳为:“this所指的就是直至包含this指针的上层对象”

    调用形式this指向
    普通函数 全局对象window
    对象的方法 该对象
    构造函数 新构造的对象

    function say(num) {
            /*
             * 在函数对象中有一个属性叫做arguments,通过这个属性可以获取相应的参数值,这个属性
             * 是一个数组,其实就是传递进来的参数
             */
            alert(arguments.length);
            for(var i=0;i<arguments.length;i++) {
                alert(arguments[i]);
            }
            alert(num);
        }

       /**
         * 在arguments这个对象中有一个callee的方法,arguments.callee(arg)可以反向的调用
         */
        function factorial(num) {
            if(num<=1) return 1;
            //此时和函数名耦合在一起
            // else return num*factorial(num-1);
            //以下就实现了函数名的解耦合,在js中通常都是使用这种方式做递归
            else return num*arguments.callee(num-1);
            
        }

    This的用法:

    /**
         * 当需要创建一个类的时候,设置类的属性和方法需要通过this关键字来引用
         * 但是特别注意:this关键字在调用时会根据不同的调用对象变得不同
         */
        
        var color = "red";
        function showColor() {
            alert(this.color);
        }
        /**
         * 创建了一个类,有一个color的属性和一个show的方法
         */
        function Circle(color) {
            this.color = color;
            this.showColor = showColor;
        }
        
        var c = new Circle("yellow");
        //使用c来调用showColor方法,等于调用了showColor()方法
        //此时的this是c,所以color就是yellow
        c.showColor();//yellow
        //此时调用的对象等于是window,showColor的this就是window,所以就会找window中color
        showColor();//red
        </script>

    函数的内部属性arguments和this

    函数的属性length和方法call和apply 

    arguments和length作用一样,但一个是函数内部属性,一个是函数属性

  • 相关阅读:
    hd CPU
    OS + Linux Interview
    db db2 v8.2
    project ERP_SAP R3 / SAP ECC / mySap
    命名空间和模块化编程3 C++快速入门41
    链接和作用域 C++快速入门42
    对象观察器(Object Inspector)
    Delphi7的窗体设计器
    对象观察器(Object Inspector)
    链接和作用域 C++快速入门42
  • 原文地址:https://www.cnblogs.com/canceler/p/4518753.html
Copyright © 2011-2022 走看看