我很难在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'
}
我怎样才能实现它?
答案 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你可以克隆你的对象......