2012-09-18 19 views
10

UnderscoreライブラリはJSONの関数をファーストクラスの市民として扱わないようです。なぜこのフィドルは使えないのですか?Underscore js extendメソッド

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

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

+0

この質問は、John Resigの[回答](http://stackoverflow.com/questions/122102/most-efficient-way-to-clone-an-object)を再度覚えています。 – haudoing

答えて

11

c正しい値持っている:あなたの問題はあなたがalertのための文字列を生成するためにJSON.stringifyを使用していることである

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

を、そうJSON.stringify(c)f1アウトを残しJSON関数の表現はありません。あなたは_.extendこのよう使用していることを覚えておいてください、余談としてhttp://jsfiddle.net/ambiguous/7j7hu/

:あなたの結果を表示するconsole.logを使用している場合、あなたはより良い運を持っています

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

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

+1

パーフェクト。ありがとうございました!私は問題がJSON.stringifyであることを知らなかったでしょう – sat