在我的课程中,我使用下一个代码来调用父方法:
mdi.Class.TControl.superClass.method.apply( context, arguments );
但是我很懒,很无聊。所以我关闭了:
{
var inherit = function( context, method, params ) {
mdi.Class.TControl.superClass[ method ].apply( context, arguments );
};
....
someMethod: function() {
inherit( this, 'someMethod', arguments )
}
}
现在我很高兴不打字太多,并且想要分析关闭时间与直接调用相比时间变慢的时间。
由于额外的调用包装函数,它一定要慢一点吗?
所以,我在父类中创建空函数
test: function() {
}
和配置文件的代码如下:
console.time( 'it' );
for( var i=0; i< 10000000; i++ ) {
inherit( this, 'test', [ 1, 2 ,3, 4 ] );
}
console.timeEnd( 'it' );
console.time( 'it2' );
for( var i=0; i< 10000000; i++ ) {
mdi.Class.TControl.superClass[ 'test' ].apply( this, [ 1,2 ,3 ,4 ] );
}
console.timeEnd( 'it2' );
结果让我感到惊讶。
it: start timer TControl.js:712
it: 244.99ms TControl.js:716
it2: start timer TControl.js:718
it2: 2004.52ms TControl.js:722
it: start timer TControl.js:712
it: 241.27ms TControl.js:716
it2: start timer TControl.js:718
it2: 2011.2ms TControl.js:722
it: start timer TControl.js:712
it: 240.78ms TControl.js:716
it2: start timer TControl.js:718
it2: 1986.68ms TControl.js:722
it: start timer TControl.js:712
it: 246.62ms TControl.js:716
it2: start timer TControl.js:718
it2: 2020.63ms
关闭案例时间更快!!! 。为什么??怎么可能?