Keep It Super Simple (ПОЦЕЛУЙ):
Если есть object
, он должен (в идеале) иметь constructor
. Если у вас нет constructor
для object
; Я чувствую, вы должны создать constructor
first .
ОК, теперь клонируем объекты:
function SampleObjectConstructor(config) {
this.greet = config.greet;
}
// custom-object's prototype method
SampleObjectConstructor.prototype.showGreeting = function(){
alert(this.greet);
}
var originalObject = new SampleObjectConstructor({greet: 'Hi!'});
var clonedObj = new SampleObjectConstructor(originalObject);
console.log(originalObject); // SampleObjectConstructor {greet: "Hi!"}
console.log('clonedObj : ', clonedObj) // SampleObjectConstructor {greet: "Hi!"}
console.log('cloned successfully?', originalObject !== clonedObj); // cloned successfully? true
Случай II: Если клонируемый объект не является custom object
с его prototype methods
; встроенный object constructor - Object
может работать так же хорошо, т. е. new Object(originalObject)
будет clone the original object
для вас. В таком случае вам даже не нужно писать свой constructor
.
var originalObject = {
foo: 'bar'
}
var clonedObject = new Object(originalObject);
console.log(originalObject); // {foo: "bar"}
console.log(clonedObject); // {foo: "bar"}
console.log(originalObject !== clonedObject); // false
Удачи ...