Javascript 创建对象的副本

Javascript 创建对象的副本,javascript,Javascript,当我试图从现有对象创建一个新对象时,如下面的代码所示,我无法使用JSON.stringify()方法打印重复对象的值。无法找出问题所在 <!DOCTYPE html> <html> <body> <p>Creating a JavaScript Object.</p> <p id="demo"></p> <script> var person = {firstName:"John2", l

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

创建JavaScript对象

var person={firstName:“John2”,lastName:“Doe”,年龄:50岁,眼睛颜色:“blue”}; var man=Object.create(person); document.getElementById(“demo”).innerHTML= man.firstName+“是”+man.age+“岁。”+JSON.stringify(man);
我得到的输出是
John2已经50岁了。{}

检查

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

你应该使用


我取得了如下预期结果。林克帮助我解决了我的问题

//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];}});
        }
    });     

JSON.stringify
只获取对象自身的属性,而不获取其原型链中的属性。另外:对于简单对象,它工作正常,但对于深度克隆,我认为我们需要编写自己的逻辑。是的。。根据问题示例,这是一种获取浅拷贝的方法。对于深拷贝,您可以检查我的要求,如下所示。我应该能够如下合并src1和src2。src1={“名称”:“abc”,“描述”:[[{“a”:“b”}][{“c”:“d”}][{“e”:“f”}]}}和src2={“名称”:“abc”,“ver”:1}到{“名称”:“abc”,“描述”:[{“a”:“b”}][{“c”:“d”}][{“e”:“f”}],“ver 1}我没有使用jquery
//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];}});
        }
    });