的registerHelper
implementation很简单:
Handlebars.registerHelper = function(name, fn, inverse) {
if(inverse) { fn.not = inverse; }
this.helpers[name] = fn;
};
还有如果助手已经被确定没有检查时,助手就是简单写入Handlebars.helpers
对象,就是这样。
没有什么能阻止你添加你自己的registerHelper
版本,虽然抱怨。你可以做这样的事情:
Handlebars.paranoidRegisterHelper = function(name, fn, inverse) {
if(name in this.helpers)
throw 'Someone is trying to redefine the ' + name + ' helper';
this.registerHelper(name, fn, inverse);
};
然后使用paranoidRegisterHelper
两次用相同的助手名会引发异常。
演示:http://jsfiddle.net/ambiguous/3Knj3/
如果你想使用registerHelper
作为名称保持,那么就安全一个你猴子之前,它参考修补它:
var registerHelper = Handlebars.registerHelper;
Handlebars.registerHelper = function(name, fn, inverse) {
if(name in this.helpers)
throw 'Someone is trying to redefine the ' + name + ' helper';
registerHelper.apply(this, arguments);
};
演示:http://jsfiddle.net/ambiguous/hUu2r/