簡體   English   中英

在其value函數中獲取鍵名

[英]get key name inside of it`s value function

如何從它的值無名函數中獲取鍵名?

/ *一些代碼* /會變成'foo'

var obj = {
    foo: function () {
             console.log('Error found in ' + /* some code */);
         }
};

obj.foo(); // get 'Error found in foo'

通過使用for..in this屬性,可以針對arguments.callee進行測試

var o = {
    foo: function () {
        var k, found, pname = 'unknown';
        for (k in this) if (this[k] === arguments.callee) {
            found = true;
            break;
        }
        if (found) pname = k;
        console.log('Error found in ' + pname);
    },
    bar: "something else"
};

o.foo(); // Error found in foo

請注意,ES5規范在嚴格模式下禁止 arguments.callee

在這種情況下,您將需要一個命名函數表達式,

var o = {
    foo: function fizzbuzz() {
        var k, found, pname = 'unknown';
        for (k in this) if (this[k] === fizzbuzz) {
            found = true;
            break;
        }
        if (found) pname = k;
        console.log('Error found in ' + pname);
    },
    bar: "something else"
};

o.foo(); // Error found in foo

最后,

  • 如果你正在做的事情,你不能保證enumerability for..in不一定會工作,看看這里
  • 如果您更改了this ,則該函數無法通過其他方式將其傳遞給您的對象的引用來知道您想要的內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM