我有以下代码:
Template.leaderboard.players = function() {
return Players.find({}, {sort: {score: -1, name: 1}});
};
Template.leaderboard.selected_name = function() {
var player = Players.findOne(Session.get("selected_player"));
return player && player.name;
};
我想这样组织得更清楚:
Template.leaderboard = {
players: function() {
return Players.find({}, {sort: {score: -1, name: 1}});
},
selected_name: function() {
var player = Players.findOne(Session.get("selected_player"));
return player && player.name;
}
};
问题是(我相信控制台中的错误)这会覆盖 Template.leaderboard
对象的所有现有方法并替换它。
是否有可能将这些方法添加到对象中,同时使用上面显示的那种表示法保留现有方法?
最佳答案
您可以像在第一个示例中那样一次添加一个,也可以使用一种方法将一个对象与另一个对象合并,例如 jQuery 的 .extend
:
$.extend(Template.leaderboard, {
newMethod1: function() {
...
},
newMethod2: function() {
...
}
});
使用后一种方法,您还需要首先确保 Template.leaderboard
确实存在!
var Template = Template || {};
Template.leaderboard = Template.leaderboard || {};
如果 Template
实际上是跨多个 JS 文件定义的,那么像上面这样的代码将是典型的,并且允许您继续添加方法而不考虑文件实际加载的顺序。
关于javascript - 使用对象符号向对象添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667276/