drduan / minggeJS

857 stars 143 forks source link

MingGeJS1.9.3.2016完美正式版 JS对象系列化BUG, 接着打脸 #228

Open xqin opened 8 years ago

xqin commented 8 years ago

3个月已经过去了, 版本号也由原来的1.7.5升级到1.9.3, 而且还号称是完美正式版...

居然还有这么弱智的BUG, 果然SB还是那个SB, 一点都没变.

<script src="MingGe_1.9.5.js"></script>
<script type="text/javascript">
    var a = {
        MGSB: new Date()
    };

    console.log($.toJSON(a), JSON.stringify(a));
</script>

image

Naville commented 8 years ago

素质不@drduan

mingge8888 commented 8 years ago

$.toJSON 问题解答

有人问,为什么有JOSN.stringify你不用,而去走代码过程

其实是有原因,我们首先看一下例子

JOSN.stringify({a: document})

WEBKIT浏览器下是直接报错的

而火孤 浏览器下 JOSN.stringify({a: document})有输出的

JOSN.stringify在每个浏览器的差异何止上述这些, 我当时就想,不如全部浏览器统一走代码过程,让输出结果统一起来

但是我走代码过程后,我又发现某些人拿 JOSN.stringify的输出结果与 走代码过程的结果进行对比 例如这句$.toJSON({a:new date()}),我走过程时,是没有输出的。而JOSN.stringify是有结果的

我在想,如果继续再写判断,也是治标不治本, 只会无休止的一直判断, JOSN.stringify是属于原生API,其实他也有漏洞,他在每种浏览器下都有极大的差异, 所以我认为没有必要再和 JOSN.stringify 结果完全一致,我已经没办法再判断下去了

我思考了几分钟,我作了艰难的选择, $.toJSON默认: 当浏览器有 JOSN.stringify时,用JOSN.stringify执行 当 浏览没有 JOSN.stringify(如IE 678)走过代码过程。

但是这样做,可能会造成甘些情况下,各浏览器有差异 所以 $.toJSON 在后面再新增一个参数,: 是否走代码过程

$.toJSON(OBJECT, true 或 false) @参数1 :OBJECT对象, @参数2:是否走代码过程

orf53975 commented 5 years ago

面再新增一个参数,: 是否走代码过程

$.toJSON(OBJECT, true 或 false) @参数1 :OBJEC

明哥nb