数组 push

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.5k
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]"

clipboard.png

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

obj._get_.push({[str]:callback});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题