Получить тело функции в JavaScript - PullRequest
0 голосов
/ 26 октября 2011

Я пытаюсь получить тело функции в JavaScript, но не могу этого сделать. Допустим, я хотел увидеть тело функции встроенной функции toUpperCase () объекта String:

document.write(String.prototype.toUpperCase.toString()); 
// returns function toUpperCase() { [native code] }

Я пробовал это в Safari, Chrome, Firefox, все возвращает одно и то же. Как мне получить доступ к тому, что это содержимое [нативный код]?

* обновление *

Причина, по которой я наткнулся на этот вопрос, заключается в том, что я пытался сделать следующее:

Если у меня есть две функции, одну из которых я хочу вызвать для другой, я хочу получить доступ к возвращаемому значению первой функции во второй, чтобы я мог выполнять function1 (). Function2 (). Например:

// create a global function that returns a value
function returnValue() {
   x = "john";
   return x;
}

// create a function that converts that value to uppercase
   function makeUpperCase(){
   return this.toUpperCase(); 
   // "this" obviously doesn't work, but "this" is where I wanted to
   // access the return value of a function I'm invoking makeUpperCase() on.
}

Итак, я хотел посмотреть, как такая функция, как toUpperCase (), получает доступ к возвращаемому значению функции, для которой она вызывается.

1 Ответ

1 голос
/ 26 октября 2011

Вы можете добавить функцию к String.prototype, затем вы можете «связать» вызовы вашей функции.

String.prototype.makeUpperCase = function(){
  // 'this' is the string that 'makeUpperCase' was called on
  return this.toUpperCase();
};

var y = returnValue().makeUpperCase();

Цепочка работает, когда функции являются частью объекта, String.prototype в этом случае. Поэтому, когда вы возвращаете этот объект (строку), вы можете вызвать для него другую функцию («цепочку»).

...