簡體   English   中英

如何在對象文字中使用“ this”?

[英]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.

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