创建对象的副本

时间:2017-01-11 05:07:54

标签: javascript

当我尝试从现有对象创建新对象时,如下面的代码所示,我无法使用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. {}

2 个答案:

答案 0 :(得分:0)

检查here

Object.create()接受一个将对象设置为原型的参数。它用于创建新对象,扩展另一个。

您应该使用Object.assign

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

答案 1 :(得分: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];}});
        }
    });