看起来Underscore库不会将JSON中的函数视为一等公民。为什么这个小提琴不起作用?
var a = { 'f1': function(){var s='success';} };
var b = {'foo' : 'bar'};
var c = _.extend(b, a);
alert(JSON.stringify(c));
var d = _.extend({name : 'moe'}, {age : 50});
alert(JSON.stringify(d));
为什么c
没有正确的价值?
d
似乎具有正确的值。
我如何解决这个限制?
答案 0 :(得分:12)
c
确实有正确的值:
{
f1: function () {var s='success';},
foo: "bar"
}
您的问题是,您使用JSON.stringify
为alert
生成字符串,JSON中没有函数的表示,因此JSON.stringify(c)
将f1
留出。{1}}。如果您使用console.log
查看结果,那么您将获得更好的运气:http://jsfiddle.net/ambiguous/7j7hu/
顺便说一句,你应该记住以这种方式使用_.extend
:
var c = _.extend(b, a);
也会修改b
,这可能不是您的意图。