函数对象转字符串

165 阅读1分钟
function functionObjStringify(circularObj){
	var cache = [];
	var str = JSON.stringify(circularObj, function(key, value) {
	    if (typeof value === 'object' && value !== null) {
	        if (cache.indexOf(value) !== -1) {
	            // 移除
	            return;
	        }
	        // 收集所有的值
	        cache.push(value);
	    }
      if (typeof(value) === "function") {
        return value.toString()
      }
	    return value;
	});
	cache = null; // 清空变量,便于垃圾回收机制回收

	return str // 移除掉循环引用的 JSON.stringify
}

var b = {
    a:122,
    b()=>{console.log(233)}
}

circularObjStringify(b) // '{"a":122,"b":"()=>{console.log(233)}"}'