[英]How do I use `this` in my object literal?
我創建了一種機制,可以使用jquery通過AJAX訪問給定的資源(用戶,帖子等),並且可以正常工作,但是我希望能夠使用this
關鍵字,而不是例如Resource.active_filters
,我會寫this.active_filters
(參見代碼)。 但是,當我這樣使用它時,它是指methods
對象而不是Resource
對象。 如何使它引用Resource
對象?
這是代碼:
var Resource = {
options: {},
active_filters: [],
ready_filters: [],
ready_count: 0,
group_items: [],
init: function () {},
methods: {
reset: function () {
Resource.active_filters = [];
Resource.ready_filters = [];
Resource.ready_count = 0;
},
},
bindEvents: function () {}
};
除非您定義ES6樣式的類或在頂層定義該函數,否則綁定將是這樣。
您可以隨時編寫經典類:
function Resource() {
// ...
}
Resource.prototype.reset = function() {
this.active_filters = [ ];
// ...
}
或者,您可以定義一個ES6:
class Resource {
reset() {
this.active_filters = [ ];
// ...
}
}
這兩種樣式比您問題中的處理方法更加傳統。
看起來這是您正在編寫的一些API,將由其他一些代碼調用。
調用此API時,請像這樣調用reset
:
reset.call(Resource)
這將使用Resource
對象的上下文調用reset
函數。
更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.