Javascript JS đối tượng bản sao
Object._clone = function(obj) {
var clone, property, value;
if (!obj || typeof obj !== 'object') {
return obj;
}
clone = typeof obj.pop === 'function' ? [] : {};
clone.__proto__ = obj.__proto__;
for (property in obj) {
if (obj.hasOwnProperty(property)) {
value = obj.property;
if (value && typeof value === 'object') {
clone[property] = Object._clone(value);
} else {
clone[property] = obj[property];
}
}
}
return clone;
};
Bản sao đối tượng CoffeeScript JS
# Object clone
Object._clone = (obj) ->
return obj if not obj or typeof(obj) isnt 'object'
clone = if typeof(obj.pop) is 'function' then [] else {}
# deprecated, but need for instanceof method
clone.__proto__ = obj.__proto__
for property of obj
if obj.hasOwnProperty property
# clone properties
value = obj.property
if value and typeof(value) is 'object'
clone[property] = Object._clone(value)
else
clone[property] = obj[property]
clone
Bây giờ bạn có thể thử để làm điều đó
A = new TestKlass
B = Object._clone(A)
B instanceof TestKlass => true
Nguồn
2012-06-25 08:09:51
Lưu ý rằng đây không phải là một kích thước phù hợp - tất cả điều này không có ích cho các đối tượng dựng sẵn như nút DOM nơi bạn muốn sử dụng phương thức cloneNode(), v.v. – thomasrutter