var app=function(){};var obj={_get_:[],
_post_:[]}app.get=function(str,callback){obj._get_.push({str:callback});
console.log(JSON.stringify(obj));//{"_get_":[{}],"_post_":[]} 为什么返回的是这个,没有push进去};app.get('/login',function(){console.log('hello');});
1 回答
一只斗牛犬
TA贡献1784条经验 获得超2个赞
问题一:push
的时候应该参考楼上的方式:
obj._get_.push({[str]:callback});
或者考虑到兼容性问题,使用下面的方式:
let tmp = {} tmp[str] = callback obj._get_.push(tmp)
问题二:JSON.stringify
在序列化函数的时候,如果函数出现在对象中,会直接忽略
,如果是在数组中,会转化为null
:
let a = {hello: function() {console.log('hello')}}JSON.stringify(a) // "{}"a = [function() {console.log('hello')}]JSON.stringify(a) // "[null]"
所以,并不是没有push
进去,只是在JSON.stringify
的时候没有把函数过滤掉了,你直接打印obj
是可以看到里面的元素的。
添加回答
举报
0/150
提交
取消