You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Element原型方法内部获取该方法自身的名称?

现有写法的核心问题

  1. 存在语法错误:你将方法挂载在Element.prototype上属于实例方法,Element构造函数本身不存在getCssStyle属性,Element.getCssStyle会返回undefined,运行时会直接抛出类型错误。即便修改为Element.prototype.getCssStyle.name,也存在第二个问题。
  2. 稳定性差、耦合度高:如果后续其他代码重写了Element.prototype.getCssStyle,该取值逻辑会拿到重写后方法的名称,无法匹配当前执行方法的实际名称。

最优符合规范的解决方案

利用ECMAScript标准中具名函数表达式的作用域特性即可:具名函数表达式的名称标识符是函数内部的只读局部变量,指向函数本身,完全不受外部赋值/重写影响,实现代码如下:

Element.prototype.getCssStyle = function getCssStyle(stylePropertyName) {
    // 直接访问当前函数作用域内的具名函数标识符即可
    const protoName = getCssStyle.name;
    return protoName;
}

备选方案(仅非严格模式可用)

如果你的运行环境不开启严格模式,也可以通过arguments.callee获取当前执行的函数本身再取名称,该写法不需要显式声明函数名,但严格模式下会被禁用,不推荐优先使用:

Element.prototype.getCssStyle = function(stylePropertyName) {
    const protoName = arguments.callee.name;
    return protoName;
}

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:06:05