2013-05-31 2 views
2

Мне было интересно, как лучше всего добавить свойства объекта-прототипа функции (или если это даже хорошая идея).Динамически добавлять свойства объекту прототипа

Это то, что я придумал:

['foo', 'bar'].forEach(function(method) { 
    String.prototype[method] = resolve; 
}); 

function resolve() { 
    // Who the hell called me? 
} 

'str'.foo(); 

Я звоню ту же функцию resolve() для всех новых свойств я добавил, и мне нужно, чтобы проверить, кто называется функция (что имя свойства) с тем чтобы оценить реализацию на основе этой информации. Все дело в любопытстве, я делаю несколько тестов на сумасшедшие реализации API JavaScript.

У вас есть предложения для этого?

+0

Для тех, интересно, где же я использовал что-то подобное, вы можете увидеть его в действии на этой библиотеке я сделал: https://npmjs.org/package/unicorn –

ответ

12
['foo', 'bar'].forEach(function (method) { 
    String.prototype[method] = function() { 
     resolve(method); 
    }; 
}); 

function resolve(method) { 
    alert(method); 
} 

("hello world").foo(); 
("hello world").bar(); 
+0

Вау, это стоявшее на моем лице и я не понял! Спасибо @tracevipin! –

Смежные вопросы