Проверка существования метода
Доброе время суток!
Помогите пожалуйста проверить существование метода объекта, если название объекта и метода приходят в строке. Например вот так var Test = { Test : function(){ } } var v = 'Test.Test'; //1 alert( typeof v == 'function' ); //false, оно и понятно почему //2 eval( "alert( typeof "+v+" == 'function' );" ) //true, но помоему это не очень хорошо Вопрос заключается в том, как исполнить проверку используя typeof, но без eval-а? |
var Test = { Test : function(){ } } var v = 'Test.Test'; //1 alert( typeof v == 'function' ); //false, оно и понятно почему //2 eval( "alert( typeof v == 'function' );" ) //false |
Цитата:
var Test = { Test : function(){ } } var v = 'Test.Test'; alert( typeof ( new Function('return ' + v)() ) == 'function' ); |
Принцип, ясен. Спасибо!
|
devote, это по сути тот же eval, только сыммитированный через Function
|
Цитата:
|
Мне понятно, что создание анонимной функции с помощью new Function это тот же eval.
Решил спросить потому, что кроме eval в голову приходил вариант с возвратом ссылки на метод: var Test = { Test : function(){ alert( 'Hello' ) } } var v = 'Test.Test'; //для простоты без всяких проверок function _( v ){ var w = window; v = v.split( '.' ); for( i in v ) w = w[ v[ i ] ] return w; } alert( typeof _( 'Test.Test' ) ); //function //вызов _( 'Test.Test' )(); //Hello Хотелось как-то попроще, думал синтаксис позволяет. Наверное мой случай это когда надо использовать eval. Для простоты. |
Часовой пояс GMT +3, время: 22:06. |