• 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作用一样,但一个是函数内部属性,一个是函数属性

  • 相关阅读:
    leetcode 189. Rotate Array 数组旋转 ---------- java
    Google test Problem A. Country Leader
    leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java
    mysql忘记密码(未初始化)
    leetcode 186. Reverse Words in a String II 旋转字符数组 ---------- java
    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)(转载)
    bootstrap
    bootstrap使用中遇到的问题(二)
    兼容ie8 rgba()用法
    浏览器前缀
  • 原文地址:https://www.cnblogs.com/canceler/p/4518753.html
Copyright © 2020-2023  润新知