@@ -421,13 +421,26 @@ function wrapfunction (fn, message) {
421
421
422
422
site . name = fn . name
423
423
424
- // eslint-disable-next-line no-new-func
425
- var deprecatedfn = new Function ( 'fn' , 'log' , 'deprecate' , 'message' , 'site' ,
426
- '"use strict"\n' +
427
- 'return function (' + args + ') {' +
428
- 'log.call(deprecate, message, site)\n' +
429
- 'return fn.apply(this, arguments)\n' +
430
- '}' ) ( fn , log , this , message , site )
424
+ var deprecatedfn ;
425
+ var self = this ;
426
+ if ( Object . defineProperty ) {
427
+ deprecatedfn = function ( ) {
428
+ "use strict" ;
429
+ log . call ( self , message , site ) ;
430
+ return fn . apply ( this , arguments ) ;
431
+ } ;
432
+ Object . defineProperty ( deprecatedfn , 'length' , { value : fn . length } ) ;
433
+ Object . defineProperty ( deprecatedfn , 'name' , { value : fn . name } ) ;
434
+ }
435
+ if ( ! deprecatedfn || deprecatedfn . length !== fn . length || deprecatedfn . name !== fn . name ) {
436
+ // eslint-disable-next-line no-new-func
437
+ var deprecatedfn = new Function ( 'fn' , 'log' , 'deprecate' , 'message' , 'site' ,
438
+ '"use strict"\n' +
439
+ 'return function (' + args + ') {' +
440
+ 'log.call(deprecate, message, site)\n' +
441
+ 'return fn.apply(this, arguments)\n' +
442
+ '}' ) ( fn , log , this , message , site )
443
+ }
431
444
432
445
return deprecatedfn
433
446
}
0 commit comments