私はまだ参照とガベージコレクタがjavascriptでどのように動作しているかを知っています。オブジェクトを保持しているファクトリを作成します。オブジェクトに渡すか、そこから取得することができます。オブジェクトをJSON文字列に変換してnullにします
.factory('lib', function(){
var lib={};
return {
set: function(id,value,isObj){
if(isObj){
lib[id]=JSON.stringify(value);
}else{
lib[id]=value;
}
},
del: function(id){
lib[id]=null;
}
};
})
.controller('testCtrl',function(lib,$timeout){
lib.set("1",{'name':'James','sureName':'Potter'},true);
$timeout(function(){
lib.del("1");
},1000);
})
私の質問は次のとおりです。 objを文字列に変換し、後で文字列を返し、現在はnull値として返します。私の元のobjは到達可能で、ガベージコレクタによって収集されますか?また、私は文字列に変換しようとobjのプロパティに何が起こる?
JSON.stringifyは、オブジェクトが作成されるとオブジェクトとは関係のない文字列を返します。オブジェクトへの参照を一切持たない文字列オブジェクトです。あなたはオブジェクトと文字列を自由に変更することができ、完全に無関係です。ありがとう、@ Barmar。 –