Heim Web-Frontend js-Tutorial JavaScript-Implementierungsmethode zum Anzeigen der Stack_Javascript-Fähigkeiten von Funktionsaufrufen

JavaScript-Implementierungsmethode zum Anzeigen der Stack_Javascript-Fähigkeiten von Funktionsaufrufen

May 16, 2016 pm 03:04 PM
javascript 函数调用 堆栈 显示

本文实例讲述了JavaScript实现显示函数调用堆栈的方法。分享给大家供大家参考,具体如下:

许多大型的JavaScript应用程序间的函数调用关系是非常复杂的,在开发或者调试过程中,经常需要跟踪某个函数是由哪些函数调用后才触发执行的,弄清楚这些函数的调用顺序对我们理解代码的数据流向是非常重要的。

Firebug提供了console.trace()来显示函数堆栈,在需要调试的地方加上下面的一行代码就能显示该函数调用时的上下文关系。IE6就没有这么方便了,它没有提供显示函数堆栈的工具,当不可避免的需要在IE6下调试代码时,使用下面的代码能够显示函数堆栈(建议将下面的JavaScript代码保存为console.trace.js,通过外部引入js的方式引用到页面):

JAVASCRIPT代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

/**

* 获取函数名称

*

* @param {Function} func 函数引用

* @return {String} 函数名称

*/

function getFunctionName(func) {

  if ( typeof func == 'function' || typeof func == 'object' ) {

    var name = ('' + func).match(/function\s*([\w\$]*)\s*\(/);

  }

  return name && name[1];

}

if (!('console' in window)) {

  window.console = {};

}

if (!console.trace) {

  /**

   * 显示函数堆栈<br/>

   * 为了和Firebug统一,将trace方法添加到console对象中

   *

   * @param {Function} func 函数引用

   *

   * @example

function a() {

b();

}

function b() {

c();

}

function c() {

d();

}

function d() {

console.trace();

}

a();

   */

  console.trace = function() {

    var stack = [],

      caller = arguments.callee.caller;

    while (caller) {

      stack.unshift(getFunctionName(caller));

      caller = caller && caller.caller;

    }

    alert('functions on stack:' + '\n' + stack.join('\n'));

  }

};

Nach dem Login kopieren

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Gründe und Lösungen für die Sperrung des Desktop-Layouts Gründe und Lösungen für die Sperrung des Desktop-Layouts Feb 19, 2024 pm 06:08 PM

Gründe und Lösungen für die Sperrung des Desktop-Layouts

Wie rufe ich Funktionen in verschiedenen Modulen in C++ auf? Wie rufe ich Funktionen in verschiedenen Modulen in C++ auf? Apr 12, 2024 pm 03:54 PM

Wie rufe ich Funktionen in verschiedenen Modulen in C++ auf?

C++-Funktionsaufrufreflexionstechnologie: Parameterübergabe und dynamischer Zugriff auf Rückgabewerte C++-Funktionsaufrufreflexionstechnologie: Parameterübergabe und dynamischer Zugriff auf Rückgabewerte May 05, 2024 am 09:48 AM

C++-Funktionsaufrufreflexionstechnologie: Parameterübergabe und dynamischer Zugriff auf Rückgabewerte

Wie zeige ich den WLAN-Passwort-QR-Code an? Es wird empfohlen, das WLAN-Passwort in 3 Sekunden auf WeChat zu scannen. Wie zeige ich den WLAN-Passwort-QR-Code an? Es wird empfohlen, das WLAN-Passwort in 3 Sekunden auf WeChat zu scannen. Feb 20, 2024 pm 01:42 PM

Wie zeige ich den WLAN-Passwort-QR-Code an? Es wird empfohlen, das WLAN-Passwort in 3 Sekunden auf WeChat zu scannen.

Leistungsoptimierung von C++-Funktionsaufrufen: Auswirkungen der Parameterübergabe und Rückgabewerte Leistungsoptimierung von C++-Funktionsaufrufen: Auswirkungen der Parameterübergabe und Rückgabewerte May 04, 2024 pm 12:57 PM

Leistungsoptimierung von C++-Funktionsaufrufen: Auswirkungen der Parameterübergabe und Rückgabewerte

Samsung wird Displays für Microsofts MR-Headsets bereitstellen, und die Geräte sollen leichter sein und klarere Displays haben Samsung wird Displays für Microsofts MR-Headsets bereitstellen, und die Geräte sollen leichter sein und klarere Displays haben Aug 10, 2024 pm 09:45 PM

Samsung wird Displays für Microsofts MR-Headsets bereitstellen, und die Geräte sollen leichter sein und klarere Displays haben

Entdecken Sie die verschiedenen Möglichkeiten, PHP-Funktionen aufzurufen Entdecken Sie die verschiedenen Möglichkeiten, PHP-Funktionen aufzurufen Apr 16, 2024 pm 02:03 PM

Entdecken Sie die verschiedenen Möglichkeiten, PHP-Funktionen aufzurufen

Wie überprüfe ich das aktuelle Verzeichnis unter Linux? Wie überprüfe ich das aktuelle Verzeichnis unter Linux? Feb 23, 2024 pm 05:54 PM

Wie überprüfe ich das aktuelle Verzeichnis unter Linux?

See all articles