js类中获取外部函数名的方法

获取外部函数名指的是在类中获取调用当前类的函数的名称。在JavaScript中,可以通过arguments.callee.caller来获取调用函数的信息,进而获取函数名。

具体步骤如下:

  1. 定义类,并在其中定义一个属性名为callerName的函数。代码如下:
class Test {
    constructor() {
        this.callerName = this.getCallerName();
    }

    getCallerName() {
        return this.constructor.name;
    }

    showCaller() {
        console.log(this.callerName);
    }
}
  1. 在调用该方法时,可以在调用类的函数中通过构造函数名获取调用函数名称。示例代码如下:
function callTest() {
    let t = new Test();
    t.showCaller();
}
callTest(); // 输出"callTest"
  1. 另一种方式是使用arguments.callee.caller.name来获取调用函数名称。示例代码如下:
function callTest2() {
    let t = new Test2();
    t.showCaller();
}

class Test2 {
    constructor() {
        this.callerName = "";
        this.getCallerName();
    }

    getCallerName() {
        if(arguments && arguments.callee && arguments.callee.caller) {
            this.callerName = arguments.callee.caller.name;
        }   
    }

    showCaller() {
        console.log(this.callerName);
    }
}

callTest2(); // 输出"callTest2"

在这个示例中,通过在构造函数中调用getCallerName函数,获取到了arguments.callee.caller.name。如果获取到了,则将其赋值给callerName属性。最终在showCaller函数中输出调用函数名称。

需要注意的是,arguments.callee是一个指向正在执行的函数自身的引用,是一个不稳定的特殊属性。使用arguments.callee.caller可能会引起性能问题或会在未来版本的JavaScript中不再存在。因此,可以通过第一种方式来更加稳定和可靠地获取调用函数名称。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js类中获取外部函数名的方法 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jquery中validate与form插件提交的方式小结

    来详细讲解一下“jquery中validate与form插件提交的方式小结”的完整攻略。 一、什么是jQuery Validation? jQuery Validation 是一个非常流行的 jQuery 表单验证插件,它可以帮助我们验证用户输入的数据是否合法。使用jQuery Validation可以方便地进行表单验证,使用方式简单易懂,可以兼容不同浏览器…

    JavaScript 2023年6月10日
    00
  • XMLHttpRequest对象_Ajax异步请求重点(推荐)

    XMLHttpRequest对象_Ajax异步请求重点(推荐) 什么是Ajax异步请求 Ajax全称为Asynchronous Javascript And XML,翻译成中文是“异步的 JavaScript 和 XML”。Ajax技术是一种在不重新加载整个页面的情况下,通过后台与服务器进行少量数据交换,实现页面的局部刷新,从而提高页面的响应速度和用户体验。…

    JavaScript 2023年6月11日
    00
  • JS身份证信息验证正则表达式

    下面是JS身份证信息验证正则表达式的完整攻略: 什么是身份证号码 身份证号码是我国公民的唯一身份标识,由18位数字和字母组成,其中最后一位可能是数字或字母X,具有以下含义: 前6位是地址码,表示身份证持有人的行政区划代码; 7到14位是出生日期码,表示身份证持有人的出生年月日; 15到17位称为顺序码,表示在同一地址码区域内,对同年、同月、同日出生的人员编定…

    JavaScript 2023年5月19日
    00
  • event.srcElement 用法笔记e.target

    event.srcElement 和 e.target 都是指向事件触发的DOM元素的属性。在不同的浏览器中,其名称和行为可能略有不同,但作用是一样的。 在现代浏览器中,我们应该用 e.target 代替 event.srcElement。下面是两个例子,演示了如何使用这两个属性: 使用 event.srcElement document.addEventL…

    JavaScript 2023年6月10日
    00
  • ES6(ECMAScript 6)新特性之模板字符串用法分析

    ES6(ECMAScript 6)新特性之模板字符串用法分析 1. 模板字符串的概念 模板字符串是ES6(ECMAScript 6)中的一项新特性,用来处理复杂的字符串拼接操作。它使用反引号字符 (`) 来表示字符串,可以直接在字符串中插入变量和表达式。 2. 模板字符串的基本用法 2.1 普通字符串的拼接 在使用模板字符串之前,我们可以先来了解一下普通字符…

    JavaScript 2023年5月28日
    00
  • JavaScript 闭包的使用场景

    JavaScript 闭包的使用场景 在 JavaScript 中,每个函数都会创建一个闭包。闭包是由函数和创建该函数时在作用域中的变量组成的。在闭包中,函数可以访问其外部作用域中定义的变量,即使函数在其外部作用域之外被调用和执行。 闭包的优点 使用闭包有以下优点: 保护变量,防止变量污染全局作用域。 在函数外部访问函数内部的变量。 实现模块化开发。 缓存。…

    JavaScript 2023年6月10日
    00
  • Vue项目全局配置微信分享思路详解

    “Vue项目全局配置微信分享思路详解”是一篇关于Vue项目中如何全局配置微信分享的攻略。下面我将详细讲解该攻略的完整思路和步骤。 标题 首先,我们需要在页面中引入微信的JS-SDK,获取微信的appid、noncestr、timestamp、signature等参数。在Vue项目中,通常使用axios进行网络请求,获取JS-SDK配置参数的代码如下所示: i…

    JavaScript 2023年6月11日
    00
  • JavaScript函数定义方法实例详解

    JavaScript函数定义方法实例详解 在JavaScript中,函数是一种重要的编程概念。函数能够帮助我们将代码组织得更好、复用性更高,并且能够进一步实现更为复杂的功能。下面将详细讲解JavaScript函数定义的多种方法。 1.函数声明 函数声明是一种最经典的JavaScript函数定义方式。 function add(a, b) { return a…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部