javascript - 创建对象的新实例

标签 javascript object instance

<分区>

我开始编写代码时假设:

person1 = person 

会给我一个新的实例,它不会。 person1 实际上是对 person 的引用/指针。

person = {age : 2}

person1 = person;

person.age = 3;

alert(person1.age); //gives us 3.

如何在不更改太多代码的情况下创建新实例?我在对象、函数(方法?)和所有内容中有 300 行代码。不想重写为构造函数。

最佳答案

如果你想要一个新的实例,你需要克隆一个对象。

一种(浅层)克隆方法是使用 JSON.stringifyJSON.parse。请注意,这不会正确复制方法:

var person1 = JSON.parse(JSON.stringify(person))

更准确地说,如果你想复制方法(等)。 this answer 演示了一种“优雅”的方式来做到这一点:

function clone(obj) {
    if (null == obj || "object" != typeof obj) return obj;
    var copy = obj.constructor();
    for (var attr in obj) {
        if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
    }
    return copy;
}

话虽如此,克隆的方法有很多种。查看此 SO post 进行比较。

关于javascript - 创建对象的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160700/

相关文章:

javascript - 如何在 CSS 中使用 div 制作尖箭头

javascript - 谷歌地图 API : infoWindow flickers/closes automatically because of mouseout event

javascript - 保留将来使用的 HTML 的最佳方法

javascript - 是否可以从对象中删除最后一个属性(按字母顺序)?

java - 如何将对象从 ArrayList 移动到另一个类中的 RecyclerView?

javascript - 如何统计ajax成功的数据?

c# - Kinect 关节 - 对象引用未设置为对象的实例

cocoa - Cocoa 中的共享对象

c# - 获取从不同程序集执行的打开窗口窗体实例的列表

java - 为什么我的已暂停应用程序仍在创建实例?