如何在javascript中创建对象的新实例

时间:2017-05-05 07:29:08

标签: javascript object

我很难在javascript中从对象创建新实例。 尝试阅读一些答案,但仍然没有运气。

var general_obj = {
    title : '',
    count : 0,
    details : [],
    status : 'OK'
}

function processData(input){
    var result = Object.create(general_obj);

    return result;
}

我想从general_obj创建新实例。我期待结果与general_obj具有相同的结构,因此在我的情况下,返回仅变为

{}

而不是:

{
    title : '',
    count : 0,
    details : [],
    status : 'OK'
}

我怎样才能实现它?

3 个答案:

答案 0 :(得分:2)

您可能希望使用Object.assign({}, general_obj)创建新对象,但所有字段都是从general_obj复制的。

请记住,这是一个浅层副本,新实例和旧实例都将通过details字段指向同一个数组。

Object.create函数允许您为创建的对象指定原型,这将导致与您想要的功能类似的行为,将导致您看到结果正在观察。

答案 1 :(得分:0)

请尝试以下方法:

function general_obj(title, count, details, status) {
    this.title = title;
    this.count = count;
    this.details = details;
    this.status = status;
}

然后实例化:

var result = new general_obj("", 0, [], "OK");

答案 2 :(得分:-1)

var general_obj = {
    title : '',
    count : 0,
    details : [],
    status : 'OK'
}

function processData(input){
    var result= (JSON.parse(JSON.stringify(general_obj)));

    result.title = 'two';
    result.count = 10;
    result.details.push({
        "in-hand": 4,
        "warehouse": 6
    });
}

使用json你可以克隆你的对象......