Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 确定匿名函数的属性名_Javascript - Fatal编程技术网

Javascript 确定匿名函数的属性名

Javascript 确定匿名函数的属性名,javascript,Javascript,是否可以确定函数中匿名函数的属性名?例如 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Testing</title> <script type="text/javascript">

是否可以确定函数中匿名函数的属性名?例如

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Testing</title>  
        <script type="text/javascript">
            var $={};
            $.fn={};
            $.fn.somePropertyName = function() {
                console.log(this); // Object { somePropertyName=function()}
                //How do I get "somePropertyName" here?
            };
            $.fn.somePropertyName()
        </script>
    </head>

    <body></body> 
</html>

您可以编写一个例程,在对象上查找特定函数,并返回属性键:

function find_fn(obj, fn) {
  let (var i in obj) if (obj[i] === fn) return i;
}

function name(fn) {
  return find_fn($.fn, fn);
}
现在使用将函数绑定到自身的技巧,这样函数就可以使用
this
从自身内部引用自身:

$.fn.foo = function() { console.log('my name is', name(this); }
$.fn.foo = $.fn.foo.bind($.fn.foo);
$.fn.foo();
但是,简单地执行以下操作可能更容易:

const FUNCNAME = 'somePropertyName';
$.fn[FUNCNAME] = function() {
  console.log("I am", FUNCNAME);
};

如果您现在输入了错误的FUNCNAME,您将得到一个引用错误或其他问题。

您可以发布您试图用来解决此问题的代码片段吗?可能重复感谢torazburo,所以,唯一的方法是定义一个常量。
find\u fn()
有效吗?我得到了一个语法错误
SyntaxError:expected expression,get关键字'var'let(obj中的var I)if(obj[I]==fn)返回I
const FUNCNAME = 'somePropertyName';
$.fn[FUNCNAME] = function() {
  console.log("I am", FUNCNAME);
};