javascript继承。请解释个人资料结果

时间:2015-04-09 08:09:54

标签: javascript class inheritance profiling

在我的课程中,我使用下一个代码来调用父方法:

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

关闭案例时间更快!!! 。为什么??怎么可能?

0 个答案:

没有答案