2017-01-11 4 views
0

以下のコードに示すように、既存のオブジェクトから新しいオブジェクトを作成しようとしていますが、JSON.stringify()メソッドを使用して複製オブジェクトから値を印刷できません。問題が何であるか把握できません。私は取得していますオブジェクトのレプリカの作成

<!DOCTYPE html> 
<html> 
<body> 

<p>Creating a JavaScript Object.</p> 

<p id="demo"></p> 

<script> 
    var person = {firstName:"John2", lastName:"Doe", age:50, eyeColor:"blue"}; 
    var man = Object.create(person); 
    document.getElementById("demo").innerHTML = 
    man.firstName + " is " + man.age + " years old." + JSON.stringify(man); 
</script> 

</body> 
</html> 

出力はJohn2 is 50 years old. {}

+0

'JSON.stringify'は、オブジェクトの*独自の*プロパティを持ち、プロトタイプチェーンのプロパティは持ちません。 –

+0

また、[「JSONオブジェクト」のようなものはありません](http://benalman.com/news/2010/03/theres-no-suchthing-as-a-json/) –

答えて

0

を使用する必要があります。 how to use javascript Object.definePropertyリンクは私の問題の解決に役立ちました。

//check whether property name of v exists in v1. 
    Object.getOwnPropertyNames(v[0]).forEach(function(val,idx,array){ 
     console.log(val + '->' + v[0][val]); 
     if (val !== undefined && val !== "_id" && !v1[0].hasOwnProperty(val)) { 
       Object.defineProperty(v1[0], val, {enumerable:true,configurable:false,get:function(){return v[0][val];}}); 
     } 
    });  
1

チェックhere

Object.create()はそのプロトタイプとしてオブジェクトを設定し、引数を取ります。これは新しいオブジェクトを作成するために使用され、を別のものに拡張します。

次のように私は望ましい結果を達成Object.assign

var man = Object.assign({}, person); 
+0

単純なオブジェクトの場合は、私は自分のロジックを書く必要があると思う。 –

+0

はい..これは、質問例ごとに浅いコピーを取得する方法です。深いコピーをチェックすることができます[ここ](http://stackoverflow.com/questions/122102/what-is-the-most-efficient -way-to-deep-clone-object-in-javascript) –

+0

私の要件は以下のようなものです。私はsrc1とsrc2を次のようにマージできるはずです。 src1 = {"name": "abc"、 "desc":[[{"a": "b"}] [{"c": "d"}] [{"e": "f"}]] {"" b "}" {""} "とsrc2 = {" name ":" abc "、" ver ":1}を{" name ":" abc " : "d"}] [{"e": "f"}]] "ver":1} jqueryを使用していない –

関連する問題