下划线js扩展方法

sat*_*sat 11 javascript extend underscore.js

看起来像Underscore库不会将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));
Run Code Online (Sandbox Code Playgroud)

为什么不是c正确的价值?

d 如果我们只使用字符串作为键和值,则似乎具有正确的值.

我怎样才能解决这个限制?

mu *_*ort 12

c 确实有正确的价值:

{
    f1: function () {var s='success';},
    foo: "bar"
}
Run Code Online (Sandbox Code Playgroud)

你的问题是你JSON.stringify用来生成字符串alert,在JSON中没有函数的表示,所以JSON.stringify(c)遗漏f1了.如果你console.log用来查看你的结果,你会有更好的运气:http://jsfiddle.net/ambiguous/7j7hu/

_.extend顺便说一句,你应该记住使用这种方式:

var c = _.extend(b, a);
Run Code Online (Sandbox Code Playgroud)

也会修改b,这可能不是你的意图.