zoukankan      html  css  js  c++  java
  • Function对象属性和方法

    /*
    var pattern = /^[w]+.(zip|rar|gz)$/;            //|选择符必须用分组符号包含起来
    var str = '123.7z'; 
    alert(pattern.test(str));
    
    function box(num1, num2) {                //普通函数的声明方式
        return num1 + num2;
    }
    
    alert(box(1, 2));
    
    var box = function(num1, num2) {    //使用变量初始化函数
        return num1 + num2;
    };
    
    alert(box(1,2));
    
    var box = new Function('num1', 'num2', 'return num1 + num2');            //使用new的构造函数来声明函数
    alert(box(1, 2));
    alert(typeof box);
    
    //函数可以传递函数,
    
    //下面的例子很普通,不是作为函数来传递的,而是作为函数的返回值来传递的
    
    function box(sum, num) {
        return sum + num;
    }
    
    function sum(num) {
        return num + 10;
    }
    
    var result = box(sum(10), 10);        //20,10sum(10)这里传递的是函数的返回值,和普通的变量一样,没区别
    alert(result);
    
    */
    
    //要把函数本身作为参数传递,而不是函数的结果
    
    
    function box(sum, num) {
        return sum(num);
    }
    
    function sum(num) {
        return num + 10;
    }
    
    var result = box(sum, 10);                //这里sum是一个函数,当作参数传递到另外一个函数里,而不是函数的返回值
    alert(result);
    /*
    function sum(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * sum(num-1);                //4 * 3 * 2 * 1 = 24 阶乘,递归
        }
    }
    
    
    alert(sum(4));
    
    
    function box(num) {
        if (num <= 1) {
            return 1;
        } else {
            return num * arguments.callee(num-1);                //使用arguments.callee,调用自身,实现递归
        }
    }
    
    
    alert(box(4));
    
    
    //window是一个对象,而且是JS里面最大的对象,是最外围的对象
    
    
    //alert(typeof window);        window是对象,类型是对象,window表示全局
    
    alert(this);            //[object Window] this目前表示的是window,因为在window的范围下
    alert(typeof this);    //和window一模一样,所以this就是window
    
    var color = '红色的';            //这里color就是全局变量,而这个变量又是window的属性
    //alert(window.color);            //这里已经很好的说明color是window下的属性
    alert(this.color);                //同上
    
    window.color = '红色的';        //相当于 var color = '红色的';???,是一样的
    
    
    var box = {
        color : '蓝色的',                //这里的color是box下的属性,也就是局部变量
        sayColor : function() {
            alert(this.color);            //这里this,我们确定了是代表的box对象。
        }
    };
    
    alert(this.color);
    box.sayColor();
    
    window.color = '红色的';
    
    function sayColor() {
        alert(this.color);            //所以这里执行的时候是动态的,第一次在window下,第二次在box下
    }
    
    sayColor();                        //这里调用sayColor,其实范围还是在window下
    
    var box = {
        color : '蓝色的'
    };
    
    
    box.sayColor = sayColor;    //这段代码相当于47行
    
    box.sayColor();                //这里执行的是box里面的this.color
    
    function box(name, age) {
        return name + age;
    }
    
    alert(box.length);
    
    
    function box(num1, num2) {
        return num1 + num2;
    }
    
    
    function sum(num1, num2) {                        //apply和call可以冒充另外一个函数
        return box.apply(this, [num1, num2]);        //this表示window作用域,[]表示传递的参数
    }
    
    function sum2(num1, num2) {
        return box.apply(this, arguments);            //这个可以当数组传递,arguments
    }
    
    //alert(box(10,10));
    
    //alert(sum(10,10));
    alert(sum2(10,10));
    
    
    function box(num1, num2) {
        return num1 + num2;
    }
    
    function sum(num1, num2) {
        return box.call(this, num1, num2);        //call只是传递参数不同,其他和apply一样
    }
    
    
    alert(sum(10,10));
    */
    
    
    var color = '红色的';                //全局
    
    var box = {
        color : '蓝色的'                    //局部
    };
    
    function sayColor() {
        alert(this.color);                
    }
    
    //sayColor();                            //全局
    
    //用call是实现对象冒充,冒充box下,冒充window下
    //sayColor.call(window);            //冒充window 红色的
    //sayColor.call(this);                    //this就是window
    sayColor.call(box);                    //冒充box,作用域就在box对象里面,所以color就是蓝色的
    本人无商业用途,仅仅是学习做个笔记,特别鸣谢小马哥,学习了IOS,另日语学习内容有需要文本和音频请关注公众号:riyuxuexishuji
  • 相关阅读:
    读写分离,就该这么改进
    使用HttpHandler来监控HTML页面请求
    半DDD架构 1
    WebForm开发中的路由功能
    如何让代码可测试化(C#)
    ParamQuery(jQuery Grid Plugin PQGrid, jQuery插件)
    通用Login功能自动化测试
    Top 10 Security Issue Solution
    KO学习重点
    OWASP Top 10 – 2013, 最新十大安全隐患(ASP.NET解决方法)
  • 原文地址:https://www.cnblogs.com/laugh/p/4339683.html
Copyright © 2011-2022 走看看