zoukankan      html  css  js  c++  java
  • JavaScript 对象属性作实参以及实参对象的callee属性

    参考自<<JavaScript权威指南 第6版>>

    /*
     * 将对象属性用作实参, 从而不必记住参数的顺序.
     */
    function arraycopy(from,from_start,to,to_start,length){
        for(var i=from_start,j=to_start;i<from_start+length;++i,++j){
            to[j] = from[i];
        }
    }
    function easycopy(args){
        arraycopy(args.from,
            args.from_start || 0, //default param
            args.to,
            args.to_start || 0,
            args.length);
    }
    var a = [1,2,3,4],b = [];
    easycopy({from:a,to:b,length:4});
    console.log(b); // [ 1, 2, 3, 4 ]
    
    /*
     * arguments对象有 callee 和 caller属性, 在非严格模式下,
     * callee: 指代当前正在执行的函数, 非标准的属性,但是大多数浏览器都已经实现了. 在匿名函数的递归调用中很有用.
     * caller: 可以访问调用栈
     */
    var fact = function(x){
        if(x <= 1)
            return 1;
        return x * arguments.callee(x-1);
    }
    // 这样也是可以的
    var fact2 = function(x){
        if(x <= 1)
            return 1;
        return x * fact2(x-1);
    }
    console.log(fact(5)); // 120
    console.log(fact2(5)); // 120
    
    /* 代码自文档化, 因为js没有参数类型, 所以最好加参数注释或者取有意义的名字,如下:
     * number表示参数是数字类型的
     * ... 表示数量不限.
     */
    function max(/*number...*/){};
    
  • 相关阅读:
    advisor调优工具优化sql(基于sql_id)
    关于等待事件cursor: pin S
    队列等待之enq: TX
    HTML5+CSS3从入门到精通 中文pdf完整版[229MB] 下载
    unity 控制透明度
    unity 限制模型移动的边界
    unity监测按下键的键值并输出+unity键值
    unity EventTrigger与模型
    wpf 获取桌面上的鼠标位置
    unity 代码更换ugui中image的关联素材
  • 原文地址:https://www.cnblogs.com/roger9567/p/5039192.html
Copyright © 2011-2022 走看看