[英]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
最后,
for..in
不一定會工作,看看這里 this
,則該函數無法通過其他方式將其傳遞給您的對象的引用來知道您想要的內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.