11

アンダースコアライブラリは、JSONの関数を第一級市民として扱わないようです。なぜこのフィドルが機能しないのですか?

http://jsfiddle.net/anV28/

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キーと値として文字列のみを使用する場合、正しい値を持っているようです。

この制限を回避するにはどうすればよいですか?

4

1 に答える 1

12

c正しい値があります:

{
    f1: function () {var s='success';},
    foo: "bar"
}

問題は、のJSON.stringify文字​​列を生成するために使用していることですalert。JSONには関数の表現がないため、省略JSON.stringify(c)f1ます。結果を表示するために使用する場合はconsole.log、幸運があります:http: //jsfiddle.net/ambiguous/7j7hu/

余談ですが、次のように使用することを覚えておく必要があります_.extend

var c = _.extend(b, a);

また、変更bされ、それはあなたの意図ではないかもしれません。

于 2012-09-18T04:06:14.213 に答える