javascriptコピー

1300 ワード

  • JavaScript引用タイプ
  • 和深コピー
  • 基本タイプ:深さと浅いコピーは同じ効果ですので、コピーだけです.参照のタイプ:浅いコピーはアドレスの伝達だけで、「ポインタ」に相当し、メモリの中の同じオブジェクトアドレスを指します.コピーは完全にコピーした新しいオブジェクトです.元のものとは関係なく、同じ内容です.
  • typeofはデータタイプを判断しますが、出力の結果はstringタイプの値です.typeof obj === ("number" || "string" || "boolean")typeof obj === "number"に相当し、||の短絡原理に関連しているので、("number" || "string" || "boolean")("number")に相当する.
  • 文字変換、コア: .
  • function cloneObject(src) {
      var result = {};
    
      for (var i in src) {
      var type = typeof src[i];   
      if (type === 'number' || type === 'string' || type === 'boolean') {
          result[i] = src[i];
        } else {
          result[i] = cloneObject(src[i]);
        }
      }
      return result;
    }
    //     :
    var srcObj = {
        a: 1,
        b: {
            b1: ["hello", "hi"],
            b2: "JavaScript"
        }
    };
    var abObj = srcObj; //     
    var tarObj = cloneObject(srcObj);//     
    
    srcObj.a = 2;
    srcObj.b.b1[0] = "hi";
    
    console.log(abObj.a);// 2
    //     ,               !!!
    console.log(abObj.b.b1[0]);// "hi" 
    
    console.log(tarObj.a);      // 1
    console.log(tarObj.b.b1[0]);    // "hello"