ホームページ  >  記事  >  ウェブフロントエンド  >  Json object_json によるディープコピーメソッドの改良版

Json object_json によるディープコピーメソッドの改良版

WBOY
WBOYオリジナル
2016-05-16 17:48:521218ブラウズ

以前、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); ;


まだ完全にテストされていないため、シュート レンガを歓迎します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。