/* * Test presence of custom Function properties. */ /*=== name: true, fileName: true, length: true, caller: false, arguments: false, callee: false, prototype: true name: true, fileName: true, length: true, caller: true, arguments: true, callee: false, prototype: true name: true, fileName: true, length: true, caller: true, arguments: true, callee: false, prototype: false name: true, fileName: true, length: true, caller: true, arguments: true, callee: false, prototype: false ===*/ function test() { function f1() {}; function f2() { 'use strict'; }; var f3 = f1.bind('mythis'); var f4 = f2.bind('mythis'); function dump(f) { print('name: ' + f.hasOwnProperty('name') + ', ' + 'fileName: ' + f.hasOwnProperty('fileName') + ', ' + 'length: ' + f.hasOwnProperty('length') + ', ' + 'caller: ' + f.hasOwnProperty('caller') + ', ' + 'arguments: ' + f.hasOwnProperty('arguments') + ', ' + 'callee: ' + f.hasOwnProperty('callee') + ', ' + // never present, just checking 'prototype: ' + f.hasOwnProperty('prototype')); // explicitly mentioned in E5.1 that not present for bound functions } dump(f1); dump(f2); dump(f3); dump(f4); } try { test(); } catch(e) { print(e); }