我正在试图找出我的json序列化出了什么问题,使用我的应用程序的当前版本和旧版本,并且在JSON.stringify()的工作方式中发现了一些令人惊讶的差异(使用来自json.org的JSON库) ).
在我的应用程序的旧版本中:
JSON.stringify({"a":[1,2]})
Run Code Online (Sandbox Code Playgroud)
给了我这个;
"{\"a\":[1,2]}"
Run Code Online (Sandbox Code Playgroud)
在新版本中,
JSON.stringify({"a":[1,2]})
Run Code Online (Sandbox Code Playgroud)
给了我这个;
"{\"a\":\"[1, 2]\"}"
Run Code Online (Sandbox Code Playgroud)
任何想法可以改变什么使相同的库在新版本的数组括号周围放置引号?
给出以下代码:
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
Run Code Online (Sandbox Code Playgroud)
我们可以留下a已被添加到b原型链中.大.并且,以下所有都是真的:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我们不知道b1提前的起源怎么办?我们怎样才能发现其原型链的成员?理想情况下,我喜欢像[b, a, Object]或的数组["b", "a", "Object"].
这可能吗?我相信我已经在SO上找到了一个答案,描述了如何找到这个,但我不能再为我的生活找到它.
我调用concat()一个字符串,如下所示:
> "1".concat("2","3")
< "123"
Run Code Online (Sandbox Code Playgroud)
现在我想这样做,我有一个字符串数组连接togther.但它并没有达到我的预期:
> "1".concat.apply(["2","3"])
< "2,3"
Run Code Online (Sandbox Code Playgroud)
不仅缺少第一个元素,而且在传递的两个元素之间插入了一个逗号,就像它将apply中的参数转换为字符串然后返回它一样.
我怎么用申请?我无法使用,String.prototype.concat.apply因为第一个参数实际上是一个可以是字符串或数组的变量.我宁愿不做一些可怕的黑客,我必须检测类型,然后为参数可能的每种可能的类型单独声明.
为了清楚起见,我正在尝试实现一个concat()适用于任何有意义的第一个参数类型的函数(例如字符串或数组).到目前为止它看起来像这样,但是不起作用:
function concat(x) {
var args = Array.prototype.slice.call(arguments,1)
return x.concat.apply(args)
}
Run Code Online (Sandbox Code Playgroud)