美文网首页
笔记(四)--arguments

笔记(四)--arguments

作者: believedream | 来源:发表于2017-02-24 09:07 被阅读0次

    1.arguments对象介绍

    arguments 凡是函数调用,默认含有一个 arguments 对象
    ,可以将其看成一个‘数组’。里面存储调用时传入的所有参数,
    可以使用数组的索引访问这些参数。

    演示代码:

    function sum () {
                    // 所有的参数都会存储到 arguments 中
                    var sum = 0;
                    for ( var i = 0; i < arguments.length; i++ ) {
                        sum += arguments[ i ];
                    }
                    return sum;
    

    注意:函数名.length,即函数的length属性,表示 定义函数时,参数的个数。

    2.函数的引用(callee) 与 (caller)

    js 中函数也是对象

    2.1 callee 在函数内部,他表示 当前函数的引用。
    2.2 caller caller 表示调用函数的

    调用函数方法:

       arguments.callee:
       //实现递归调用
        function fn() {
           arguments.callee();  // 使用 callee 来递归
       }
       fn();
       //为什么使用 arguments.callee 调用递归呢
       
       // js 是一个弱类型的语言, 可以随意赋值
       
       function f() {
           console.log( 'Hello JS' );
       }
    
       f = 0;  // 赋值
    
       console.log( f );
       
       
       // /*2. caller 拜师调用函数*/
       // 在函数 f1 中 调用 函数 f2
    
       // function f1 () {
       //  f2();
       // }
       
       // f1();
       // f1 就是称为调用者. 调用的发起人.
       // f2 就是被调用者
    
       // caller 就是在被调用函数中, 获得调用函数的引用
    
       // 语法: 函数名.caller
       function f2 () {
           console.log( f2.caller );//指的是调用者是谁,这里指的是 itcast
       }
    
       function itcast() {
           f2();   
       }
    
       itcast();
       
    
    

    3.eval()函数

    功能:动态的执行代码

    eval 函数与 Function 功能类似。
    eval 可以直接将字符串作为代码来执行

    // 可以直接调用 eval 函数, 来实现字符串代码
        eval( 'var num = 123;' );
        eval( 'console.log( num );' );
    
        alert( num );
    

    3.1 function 与 eval 的区别

    在 eval 函数中, 使用字符串声明的变量, 在 eval 函数外面可以立即使用

    Function 是用来生成函数中的, 所以如果要执行, 需要调用;

    如果函数要立马执行

    
        //      (function () { 
        //          alert ( '立即执行函数' ); 
        //       })();
        //       // 又称作 自调用函数
    

    4、json对象的介绍

    //  json 格式( 严格的国际通用数据表示协议, 结构 )
    
    //  在 js 中使用的 json 对象, 相对较松散
    
    // json 格式 有两种结构
    
    //  1: {}
    
    //  2: []
    
    // 注意: json 格式中, 键名也必须使用双引号括起来.
    

    4.1将字符串变成对象, 有三种做法

    var data = '[ { "name": "张三", "age": 19, "gender": "男"}, { "name": "李四", "age": 18, "gender": "女"} ]';
        // 1. eval 做法
        var o1 = eval( "(" + data + ")" );   // 注意一个习惯. 就是数据两端一般加上圆括号为好
    
        // 2. Function 做法
        var o2 = (new Function( 'return ' + data ))();
    
        // 3. 使用 ES5 中引入的标准处理 JSON 的语法
        // JSON.parse(  )
        // 注意: 字符串必须是严格是 json 格式
        var o3 = JSON.parse( data );
        
        将数组转化成 字符串
        var arr = [1,2,3, { a : 1 } ];
        JSON.stringify( arr );
        
        
        字符串解析成 JSON
        var str = '[1,2,3,{"a":1}]';
        JSON.parse( str );
    

    5.instanceof 用法

    <script>
        // instanceof 语法
        //  boolean 对象 instanceof 构造函数
        // 判断该对象是否为 构造函数 的 实例   错误
    
        function Person () {}
    
        var p1 = new Person();      // 按照原有的原型结构来创建
                                    // p1 -> 原来的 Person.prototype -> Object.prototype -> null
    
        // 设置原型
        Person.prototype = {}; 
    
        // var p1 = new Person();   // p1 -> 新的 Person.prototype. 即 {} -> Object.prototype -> null
    
        console.log( p1 instanceof Person );   // 就在判断 {} 是否在 p1 的原型链上
    
        // 判断 构造函数的 原型属性 是否在对象的原型链上
    
        
    
    </script>
    

    6.Object.protype_proto

    09-完整的原型链结构(包含对象与函数).png

    相关文章

      网友评论

          本文标题:笔记(四)--arguments

          本文链接:https://www.haomeiwen.com/subject/cygiwttx.html