以前、Json オブジェクトのディープ コピー メソッドに関するブログ投稿を見ました。つまり、
var obj = {
sayName: function() {
alert(this.name);
},
name:'京水源'
}; var cloneObj=JSON.parse (JSON.stringify(obj));cloneObj.sayName();
しかし、この方法では、属性値を関数の属性としてコピーすることはできません。メソッドが改善されました。具体的なコードは次のとおりです:
var obj = {
sayName: function() {
alert(this.name);
},
name:'Still Water Abyss'
}; clone(){
var str,newObj;
str= JSON .stringify(obj, function(key, value) {
return (typeof value == 'function' ? value.toString().replace (/^function(.*)/g, "jsonFunction$1") : 値 )
});
newObj = JSON.parse(str, function (key, value) {
if (/ ^jsonFunction(.*)/.test(value)) {
var strFun = '(' value.replace(/^jsonFunction(.*)/, "function$1") ')'; eval(strFun);
戻り値;
}
var cloneObj=clone(obj); ;
まだ完全にテストされていないため、シュート レンガを歓迎します。