为了账号安全,请及时绑定邮箱和手机立即绑定

数组 push

数组 push

慕后森 2018-09-23 22:19:52
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]"

https://img1.sycdn.imooc.com//5ba7a1d70001564d04870197.jpg

所以,并不是没有push进去,只是在JSON.stringify的时候没有把函数过滤掉了,你直接打印obj是可以看到里面的元素的。


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 587 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信