3
是否可以在此代碼中獲得字符串「markHotel」?JavaScript - 獲取調用函數的名稱
this.markHotel = this.markPrice = function() {
// get "markHotel"
};
this.markHotel();
是否可以在此代碼中獲得字符串「markHotel」?JavaScript - 獲取調用函數的名稱
this.markHotel = this.markPrice = function() {
// get "markHotel"
};
this.markHotel();
你可以使用Function.prototype.bind()。這裏有一個簡單的例子:
function base() {
console.log(this.name);
// do some other stuff using this.name or other this props...
}
var markPrice = base.bind({ name: 'markPrice' });
var markHotel = base.bind({ name: 'markHotel' });
// this will log 'markPrice'
markPrice();
// this will log 'markHotel'
markHotel();
它看起來就像你可能會做這樣的類構造函數裏面,但它不是從你的例子完全清楚。如果是這樣,請確保不要混淆類構造函數的「this」上下文和「base」函數的「this」上下文,後者在設置markPrice和markHotel時會被手動綁定。
文檔,以便綁定:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
http://stackoverflow.com/questions/2648293/javascript-get-function-name –
@RobM。這裏的問題是函數本身是匿名的,沒有名字。我不確定你可以做OP在這裏要求什麼。 –
我認爲唯一可以做到這一點的方法就是拋出一個異常,抓住它,並解析特定於平臺的堆棧,並且沒有義務包含它。所以不是真的,但是完好的代碼應該不需要。 –