На самом деле вы можете подумать, что можете просто зациклить все свойства объекта Math
и превратить любую функцию в глобальную (скопировав ее ссылку):
for( var prop in Math ) {
if( typeof Math[ prop ] === 'function' ) {
window[ prop ] = Math[ prop ];
}
}
Это будет работать .. , если слово будет не будет здесь:)
Мы можем обнаружить проблему с Object.getOwnPropertyDescriptor
:
console.log( Object.getOwnPropertyDescriptor(Math, 'floor') );
.. и, как мы видим, все methods
установлены на enmuerable
false
.
редактировать
Я действительно забыл о Object.getOwnPropertyNames
. Вы действительно можете получить все имена свойств с помощью этого метода, например
Object.getOwnPropertyNames(Math).forEach(function(name) {
if( typeof Math[name] === 'function' )
window[name] = Math[name];
});