最近我成了function.name房产的忠实粉丝.
例如,我编写了一个扩展原型的函数.
它的工作方式..
Array.give(
function forEach() { ... }
);
Run Code Online (Sandbox Code Playgroud)
..然后会让你做..
['a', 'b', 'c'].forEach(function () { ... });
Run Code Online (Sandbox Code Playgroud)
此代码适用于Chrome,Safari,Firefox和Opera,但不适用于IE.
在进行了一小部分挖掘之后,我意识到对于give函数来说,function.name只是返回undefined,就像返回的其他东西一样"forEach".
有没有另一种方法可以在IE中获得该名称,或者我是否会对这个美妙的财产失去爱意?
我有一个具有大量视图的Marionette应用程序.我想在每个渲染时将调试消息记录到控制台(并且可能在将来,在其他事件上)
我目前通过从每个View的onRender方法记录来执行此操作:
MyModule.MyViewType = Marionette.ItemView.extend({
// ... view properties and methods
onRender: function() {
// ... other onRender code
console.debug('MyModule.MyViewType %s %s', this.cid, 'render');
}
});
Run Code Online (Sandbox Code Playgroud)
这有效,但它有几个缺点:
onRender操作,因此我只是为了调试而添加方法.那感觉不对.show,我需要为每个视图添加一个事件处理程序或一个新方法.有没有办法记录每个View渲染而不向每个View添加代码?