zoukankan      html  css  js  c++  java
  • javascript 值传递

    在js中 简单类型是值传递 复杂类型是引用传递

      简单类型:String Number Boolean undefined Null

      复杂类型:Object 

     下面的代码演示这个

        var simpleName = "cindy";
        var obj = {
            "name":"radish",
            "age":24
        };
        var list = [
            obj,
            {
                "name":"ruby",
                "age":22,
                "friends":[obj, "cindy"],
                sayHello:function () {
                    alert("hello" + this.friends);
                }
            }];
        //深拷贝 不受影响
        console.log(markName(deepCopy(simpleName),"_js"));//cindy_JS
        console.log(simpleName);//cindy
        //未拷贝 也没变化
        //console.log(markName(simpleName,"_js"));
        //console.log(simpleName);
    
        //深拷贝 不受影响
        console.log(markName(deepCopy(obj),"_js"));
        console.log(obj);
        //未拷贝 对象被改变
        //console.log(markName(obj,"_js"));
        //console.log(obj);
    
        //深拷贝 不受影响
        console.log(markName(deepCopy(list), "_js"));
        console.log(list);
        //未拷贝 对象被改变
        //console.log(markName(list,"_js"));
        //console.log(list);
    
        //给对象的name属性添加_JS后缀
        function markName(source, flag) {
            var type = typeof source, simpleType = ["string", "number", "boolean"];
            if (!source) {
                return source;
            } else if (-1 != simpleType.indexOf(type)) {
                return source + flag;
            } else {
                for (var i in source) {
                    source[i] = typeof source[i] === "object" ? markName(source[i], flag) : "name" == i ? source[i] + flag : source[i];
                }
                return source;
            }
        }
        ;
        //深拷贝对象
        function deepCopy(obj){
            var type = typeof obj, simpleType=["string","number","boolean"], rs;
            if(obj){
                if(-1!=simpleType.indexOf(type)){
                    rs = obj;
                }else{
                    rs= obj.constructor === Array? []:{};
                    for(var i in obj){
                        if(obj.hasOwnProperty(i)){
                            rs[i] = typeof obj[i]==="object"? deepCopy(obj[i]):obj[i];
                        }
                    }
                }
            }else{
                rs = "error";
            }
            return rs;
        }
  • 相关阅读:
    JAVA代码格式 Google-java-format VS AlibabaP3C
    推荐Java代码规范的几个插件
    muduo 库解析之六:Exception
    muduo 库解析之五:CurrentThread
    muduo 库解析之二:TimeStamp
    muduo 库解析之一:Copyable 和 NonCopyable
    YUV
    Windows 下 ffmpeg 的安装和测试
    QImage 与 Mat 转换时图像倾斜
    qBreakpad
  • 原文地址:https://www.cnblogs.com/x-radish/p/3196403.html
Copyright © 2011-2022 走看看