考虑到以下代码:
var testLiteral = {
logMe: function() {
logger(this, 'logMe message');
}
}
console.log(Object.keys({ testLiteral })[0]);
logger(testLiteral, 'mainline message');
testLiteral.logMe();
function logger(caller, message) {
console.log(Object.keys({ caller })[0] + ': ' + message);
}
我们得到了以下结果:
有什么方法可以通过内省传递的文字来查看原始的“对象”名称,即testLiteral?我想要的结果是:
注意:typeof和object.constructor.name不使用文字,只分别返回object和Object。
发布于 2018-08-16 06:31:10
var testLiteral = {
logMe: function() {
logger(this, 'logMe message');
}
}
console.log(Object.keys({ testLiteral })[0]);
logger(testLiteral, 'mainline message');
testLiteral.logMe();
function logger(testLiteral, message) {
console.log(Object.keys({testLiteral})[0] + ': ' + message);
}
发布于 2018-08-16 07:07:21
可以在将对象传递给logger函数之前包装它。对于testLiteral.logMe();,它将记录logMe,因为logMe函数中的this将引用自身。
var testLiteral = {
logMe: function() {
logger(this, 'logMe message');
}
}
console.log(Object.keys({ testLiteral })[0]);
logger({ testLiteral }, 'mainline message');
testLiteral.logMe();
function logger(caller, message) {
console.log(Object.keys(caller)[0] + ': ' + message);
}
https://stackoverflow.com/questions/51869258
复制相似问题